2007年09月30日 13:30 [Edit]

tips - sshでパスワード無しログイン

以下に加えて、これも覚えておくといいかも。


  1. パスワード無しの認証ファイルを作る
    $ ssh-keygen -d -f ~/.ssh/nopass-dsa -N ''
    
    または
    $ ssh-keygen -d -f ~/.ssh/nopass-dsa -N '' -C you@your.example.com
    

    -N ''がポイントです。

    前者の場合、ssh commentは$USER@$HOSTになりますが、最近はDHCPでホスト名を決めちゃう場合も多いので、それがいやな場合は後者の方法で決め打ちするのがいいでしょう。

    完了すると、~/.ssh/nopass-dsaと、~/.ssh/nopass-dsa.pubの二つのファイルが出来ます。前者は絶対人に渡さないように注意してください。具体的には、自分の端末として使う(ノート)パソコンだけにこのファイルを置くようにするべきでしょう。

    ここで一度認証ファイルを作っておけば、あとは他のリモートホストには以降の手続きを繰り返すだけでOKとなります。

  2. 公開キーをリモートホストに登録する

    すでにリモートホストへは、パスワードありでssh loginできるとして

    $ ssh remote.example.com touch ~/.ssh/authorized_keys
    $ cat ~/.ssh/nopass-dsa.pub | ssh remote.example.com \
      'umask 077; test -d ~/.ssh || mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys'
    

    で行けます。

  3. 実際にログインしてみる

    これで、

    slogin -i ~/.ssh/nopass-dsa remote.example.com
    

    でパスワードなしログインが出来るようになっているはずです。

    うまく行かない場合は

    slogin -v -i ~/.ssh/nopass-dsa remote.example.com
    

    として途中経過を確認してみてください。

    うまく行ったら、

    alias rlogin slogin -i $HOME/.ssh/nopass-dsa
    

    などとして、r*コマンドを置き換えておくと便利です。

このtip、"ssh nopass"とかでぐぐると出ては来るのですが、protocol 1時代のものばかり引っかかるので、protocol 2がデフォルトになった現代用に少し近代化してみた次第です。

Dan the Man with too Many Remote Hosts to Login

追記:odzさん、添削ありがとうございます。Permissionの方は改訂しました。aliasの方はそのまま。s*とr*を切り替えて使いたいという需要があるので。


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:tips - sshでパスワード無しログイン
404 Blog Not Found:tips - sshでパスワード無しログイン【】at 2012年01月16日 19:43
管理人 気になる情報、ニュース tips - sshでパスワード無しログイン(404 Blog Not Found) スクール水着、セパレート化 (エキサイトニュース) ロリポップ! ニコニコ動画はアマゾンで4億円の収入? 「
管理人 気になる情報、ニュース【お得.com】at 2007年09月30日 23:22
ref:404 Blog Not Found:tips - sshでパスワード無しログイン Secure Shell のほうね。 dan さんからトラックバックが来たわけだけど、とりあえず authorized_keys のパーミッションは気にしないといけないんじゃないだろうか。というわけで、公開鍵をリモートホストに正し
SSH の件捕捉【odz buffer】at 2007年09月30日 22:52
この記事へのコメント
そもそもこの場合のパスフレーズはブルートフォースで簡単に破られる程度の気休めであって、秘密鍵の管理を怠った時点でアウトなので。
まぁ、その他の細かい話についてはググれば
http://www.jp.freebsd.org/QandA/HTML/2255.html
に辿り着くでしょうし。
当該ページの最終更新日は2002/08/24 06:22:44とかですが内容的には特に古びてもいないので。
Posted by a at 2007年10月01日 04:22
odz buffer さんも書かれてますが、パスフレーズを入力したくないだけなら ssh-agent の使い方を書いたほうがよろしいかと。

パスフレーズなしで使用したいのは、パスフレーズ入力待ちで止まってほしくない場合(cron 等)がほとんどだろうし、その場合でも authorized_keys で実行できるコマンド他制限するべきでしょう。
Posted by foo at 2007年09月30日 23:54
sakuretsuさん、
反映させました。
Dan the Old SSH User
Posted by at 2007年09月30日 20:44
統合されたのは結構まえですね > authorized_keys

ノシ http://www.unixuser.org/~haruyama/security/openssh/info.html
Posted by sakuretsu at 2007年09月30日 20:16
たまたま umask 022 じゃなかった場合も考慮すると、

chmod go-w authorized_keys

しといたほうがいいかもしれません。まあ、-v すればすぐわかると思いますが。
Posted by sanewo at 2007年09月30日 19:09
s/時分の端末/自分の端末/
Posted by Yuichirou at 2007年09月30日 16:37
(一読者|foobar)さん、
え?ぎょえぇ。速攻直しました。手元の草稿では.pubがちゃんとついていたのに、なぜだろ。
yotaroさん、
そうなのですか。今でもprotocol 1のホストは結構残っていたりするので、これに関しては統一しないでほしい、というよりどうせならauthorized_keys.dsaとかauthorized_keys.rsaとか拡張子つけた方がいいように思うのだけど。
Dan the Typo Generator
Posted by at 2007年09月30日 15:41
ちょっと自信ないですが、OpenSSHの将来のバージョンでは、プロトコルのバージョンにかかわらずauthorized_keysに統一するらしいですよ。
authorized_keys2は使われなくなるみたいです。
Posted by yotaro at 2007年09月30日 15:29
$ cat ~/.ssh/nopass-dsa.pub の間違いではないですか?
Posted by foobar at 2007年09月30日 15:17
cat ~/.ssh/nopass-dsa.pub では?
Posted by 一読者 at 2007年09月30日 15:17