あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

パスワード無しでssh接続

いわゆる鍵認証方式です。
以下接続する側PCをクライアント、接続される側PCをサーバと呼称します。

鍵の作成

とりあえず以下のコマンドをクライアント側で実行します。

$ cd $HOME/.ssh
$ ssh-keygen -t dsa -N "" -f ./ファイル名

ファイル名はなんでもいいですが、鍵接続をする為のファイルなので、目的に応じた名前にしてあげてください(key_connectとかちょっと分かりやすすぎる名前もNGだと思うけどね)。これで、「ファイル名」「ファイル名.pub」のふたつのファイルが作成されます。
※環境によっては.sshディレクトリがユーザのホームディレクトリに存在しない場合もあるので、その場合は以下のようにmkdirして構い舞せん(特に権限設定とかは必要ない)。

$ mkdir /home/ユーザ名/.ssh

.sshディレクトリで作成しなくてもいいんですが、ユーザのホームディレクトリに置いとくと間違って消す(消したwWw)ので、.sshディレクトリで作業してます。

サーバ側に鍵ファイルを登録する

上記項で作成した「ファイル名.pub」の中身を、サーバ側の「authorized_keys」というファイルに登録します。コピペでも構わないんですが、変な所で改行入ると認識されない(ていうか1ユーザの情報は1行におさめる必要がある)ので、素直にコマンドを使いましょう。

$ cd $HOME/.ssh
$ cat ファイル名.pub > authorized_keys

ちなみに、サーバ側にも.sshディレクトリが無い場合は、クライアント側と同様に.sshディレクトリを作成してください。サーバ側は必須です。
また、authorized_keysファイルが無い場合は、sshd_configファイルで鍵認証が許可されていない可能性が大ですので、sshd_configファイルを編集します。権限がない人はそのサーバの管理者に依頼してください、だめって言われる場合も多い諸刃の剣。

# vi /etc/ssh/sshd_config
->以下の記述を探す
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
->恐らく先頭に#が入ってコメントアウトされているので、#だけ外して下さい。これで保存すればおk。 

んで、あとは.sshディレクトリに空のauthorized_keysファイルを作成すればいい。

$ cd $HOME/.ssh
$ vi authorized_keys

接続するよ

クライアント側から初回接続時のみ、パスワードが必要です。が、これが終わればパスワード認証無しで接続できるようになります。

$ ssh ユーザ名@サーバIP

パスワード認証の他に(yes/no)とかいうのが出てきたら、「このサーバに鍵認証接続用のファイル見つかったんだけど、鍵認証接続できるようにしておk?(超訳)」って事なので、「yes」でおk。すると、一旦サーバに接続されるので、ログアウトして再度以下のコマンドで接続してみましょうよ。

$ ssh ユーザ名@サーバIP -i $HOME/.ssh/ファイル名

これでおk、パスワード認証をスルーして接続できるようになりました。

注意

お分かりだとは思いますが、パスワード認証がなくなった分、不正ログインされたりすると、芋づる式に接続先も入られてしまうので、その点だけはご注意くださいまし。

応用

これを使うと、crontabと組み合わせて特定のディレクトリを毎日rsyncしてバックアップとか出来ます。scpでいいじゃない、という話もあるけど、rsyncだと差分バックアップもできるので、scp+rsyncフルバックアップと差分バックアップを組み合わせたりして、HDDに優しいバックアップもできます。セキュリティの高いローカルネットワーク内でしか使いたくないですけどね…(:D)rz