sshは鍵認証を使えばパスワード無しで接続できて管理が楽になる
はじめに
ssh でサーバに鍵認証を使って接続する方法を紹介します。
鍵認証を使えばパスワードを入力する必要もなくなりますし、パスワードをハックされて他人に接続されてしまう危険性も下がります。
公開鍵と秘密鍵の作成
$ ssh-keygen -t rsa
コマンドを実行すると 2 つのファイルが作成されます。
- id_rsa:秘密鍵
- id_rsa.pub:公開鍵
秘密鍵はローカルの.ssh ディレクトリに格納してください。
公開鍵は接続先のサーバのアップします。
公開鍵のアップ
scp コマンドを使って公開鍵を接続先のサーバへアップします。
$ scp ~/.ssh/id_rsa.pub user@host:/path/to/uploadfile
接続設定
接続先のサーバに必要なディレクトリとファイルになります。
/home/user/.ssh
/home/user/.ssh/authorized_keys
それぞれの権限設定は下記のようになります。
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys
authorized_keys ファイルの中に、公開鍵の内容を記載します。
記載と言っても、アプロードした公開鍵ファイルの内容をcat
して追記するだけです。
cat /path/to/id_rsa.pub >> home/user/.ssh/authorized_keys
使用しているユーザによっては、権限がないかもしれません。
その場合は、sudo を使って実行しましょう。
sudo cat /path/to/id_rsa.pub >> home/user/.ssh/authorized_keys
ここまでの設定で、SSH 鍵認証で接続先へログインできるようになりますが、config を設定しておくと便利になります。
config を設定する
下記のファイルに接続先の設定をすることで、ssh 接続先
の形でコマンドを実行するだけで接続することができるようになります。
/home/user/.ssh/config
ファイルを編集していきます。ファイルを編集するエディタは普段使っているもので OK です。
vi を使って編集します。
vi /home/user/.ssh/config
内容は下記を環境に合わせて変更してください。
Host 接続名
HostName ホスト名
User ユーザ名
Port ポート番号
IdentityFile ~/.ssh/id_rsa.pub
config ファイルは下記のように複数記載することができるので、管理が楽になります。
Host 接続名1
HostName ホスト名1
User ユーザ名1
Port ポート番号
IdentityFile ~/.ssh/id_rsa.pub
Host 接続名2
HostName ホスト名2
User ユーザ名2
Port ポート番号
IdentityFile ~/.ssh/id_rsa.pub
接続先ごとに別のキーで管理する場合は、ssh-keygen -t rsa
コマンドを使って接続先ごとの秘密鍵と公開鍵を生成してIdentityFile
に指定してください。
config ファイルを使って接続してみる
config の設定を作成したら下記のコマンドで実際に接続できるか試して、接続できれば OK です。
$ ssh 接続名
パスワードなしの鍵認証にしておけば、パスワードを覚えておく必要も無いですし、config ファイルを見れば接続さきなんだっけというのも減りますので便利です。
公開鍵は誰かに渡したり、誰でも持っていけるような場所に置かないようにしましょう。
鍵と接続先の情報があれば接続できてしまいますので。