リモートサーバーに鍵認証でSSHログインする、など
レンタルサーバーなどで、ユーザーアカウントとパスワードが与えられ、SSHログインできるものとします。また、スーパーユーザー root にもなれるものとします。
一般ユーザー user でログインします。
スーパーユーザー root で直接ログインできないことを確認します。
local> ssh user@server
[user@server] $
# /etc/ssh/sshd_config PermitRootLogin no
yes になっていたとしたら、no にして sshd を再起動した方が良いでしょう。
デフォルトのポート 22 は、ポートスキャンの対象になりやすいので、変更しておくと良いでしょう。TCPやUDPにおけるポート番号の一覧 などを見て、適当な番号を決めましょう。ここでは、2222 とします。
[user@server] $ sudo /etc/init.d/sshd restart
# /etc/ssh/sshd_config Port 2222
変更したら sshd を再起動します。
このように変更した場合、ローカルマシンからSSHログインするには、ポート番号を明示する必要があります。
[user@server] $ sudo /etc/init.d/sshd restart
SSHに基づくユーティリティを使う場合も、ポート番号を明示することが必要になります。例えば、
local> ssh -p 2222 user@server
[user@server] $
local> scp -P 2222 my_file user@server:~/
local> rsync -az -e "ssh -p 2222" ~/shared_dir/ user@server:~/shared_dir/
local> git remote add remote_repos ssh://user@server:2222/path/to/repos.git
次に、パスワードではなく、鍵認証でログインできるようにします。
まず、秘密鍵と公開鍵を生成します。
デフォルトでは、ディレクトリ ~/.ssh/ に秘密鍵 id_rsa と公開鍵 id_rsa.pub が生成されますが、名前を変更することも可能です。すでに同名のファイルが存在する場合には、上書きするかどうかをきかれます。また、パスフレーズを入力した場合は、秘密鍵を別のマシンなどにコピーして使う場合などに、このパスフレーズを入力する必要がでてきます。
local> ssh-keygen -t rsa
ディレクトリ ~/.ssh/ と秘密鍵 id_rsa の権限モードが、それぞれ 700 (rwx------), 600 (rw-------) になっていることを確認しておきましょう。
次に、生成した公開鍵をリモートサーバーにコピーします。リモートサーバー上にディレクトリ ~/.ssh/ がなければ、作成しておきます。
このディレクトリに公開鍵を記述した authorized_keys2 のようなファイルがなければ、単純にローカルマシンの id_rsa.pub をコピーすれば良いでしょう。
[user@server] $ mkdir ~/.ssh
[user@server] $ chmod 700 ~/.ssh
すでにファイルが存在する場合には、そのファイルに追加すれば良いです。
local> scp -P 2222 ~/.ssh/id_rsa.pub user@server:.ssh/authorized_keys2
これで、鍵認証によるSSHログインができるようになったはずです。
local> scp -P 2222 ~/.ssh/id_rsa.pub user@server:tmp
[user@server] $ cat tmp >> .ssh/authorized_keys2
[user@server] $ rm tmp
サーバーのユーザーアカウントのパスワードを聞かれずにログインできたら成功です。もしかしたら、秘密鍵に関するパスフレーズを聞かれるかもしれません。
local> ssh -p 2222 user@server
鍵認証でログインできることを確認したら、パスワードによるログインを禁止するようにします。
[user@server] $ sudo vi /etc/ssh/sshd_config
# /etc/ssh/sshd_config PasswordAuthentication no
[user@server] $ sudo /etc/init.d/sshd restart