geek.conf.2

あるインフラエンジニアの備忘録

そこの君!ノーパスワードでsshログインしないかい?

local:ログインするサーバ
remote:ログインされるサーバ
作業するユーザは両サーバ共に同じユーザ、つまりUIDは同一にする。

・まず、localで以下のコマンドでホームディレクトリの下に.sshディレクトリを作成し
 nopass-dsaファイルとnopass-dsa.pubファイルを作成する。
 これがそれぞれ秘密キーと公開キーとなる。
 local$ssh-keygen -d -f ~/.ssh/nopass-dsa -N ''

・remoteサーバにsshログインする。

 local$ssh remote.example.com

・ホームディレクトリの下の.sshディレクトリにauthorized_keysファイルを作成する。
 これが公開キーとなる。


 remote$mkdir ~/.ssh/ (.sshディレクトリがない場合)

 remote$chmod 700 ~/.ssh/ (.sshディレクトリがない場合)

 remote$touch ~/.ssh/authorized_keys

 remote$chmod 700 ~/.ssh/authorized_keys

・remoteサーバからログアウトする。

 remote$exit

・localサーバから以下のコマンドを実行する。
 これはumaskによってファイルやフォルダを作成するときに所有者だけアクセス権限
 を与えて作成するようにしている。umask 066 → パーミッションは666-066=600
 となる。

 testコマンドによって~/.sshディレクトリがないか確認している。
 あれば真、なければ偽を返す。

 なければmkdirする。

 最後にcatの標準出力結果をauthorizrd_keysに登録する。

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

 これでlocal:/home/USER/.ssh/nopass-dsa.pub ← 公開キーを
 remote:/home/USER/.ssh/authorized_keysに登録完了。

・ノーパスワードでremote1でremoteサーバにログインする。
 slogin -i で秘密キーを指定してログインすればノーパスワード
 でログイン可能
 slogin -v でデバックモードでログインするので経過を探ると良い。

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


・認証ファイルを指定するのが面倒なら

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

☆2012/2/15追記

   local$alias slogin="slogin -i $HOME/.ssh/nopass-dsa"

 としてslogin コマンドを再作成して

 local$slogin remote.example.com

 でログインすると良い。

 またはsshd_configのidentity fileに$HOME/.ssh/nopass-dsaを設定する。

 
 以上、ここを参考にメモメモ
 
404 Blog Not Found:tips - sshでパスワード無しログイン

SSH の件補足 - odz buffer: