key

linux

SSHキー(鍵ペア、公開鍵/秘密鍵)の生成

サーバーにSSHでログインする場合や、SCPコマンドでファイル転送する場合など

GitのリモートリポジトリにSSHでアクセスする場合などに必要なのがSSHキーです。

SSHキーは、公開鍵と秘密鍵のペアで構成されます。

SSHキーを生成するコマンド

ssh-keygen -t rsa

実行例

ファイル名を省略した場合は、下記のように作成されます。

秘密鍵 ~/.ssh/id_rsa
公開鍵 ~/.ssh/id_rsa.pub

秘密鍵は流出させないように注意してください。
他所のサーバーなどに設定するのは公開鍵の方です。

生成された公開鍵を、sshやscpで接続するサーバーの ~/.ssh/authorized_keys に追加しておくと、毎回パスワードを入力する必要がなく、パスワード認証よりも安全です。

~/.ssh/authorized_keys を作成した場合はパーミッションを変更しないと機能しません。

パーミッション

700 ~/.ssh/
600 ~/.ssh/authorized_keys

公開鍵を authorized_keys やGitLab などに登録する場合はファイルの中身をまるごとコピーします。

パスフレーズを入力した場合(かつMacのキーチェーンなどにパスフレーズを登録しない場合は)Macを起動したあとの初回のSSHキー使用時にのみパスフレーズを入力しますので、パスフレーズを入力を長年続けてますが全然手間には感じないです。

The authenticity of host 'example.com (xxx.xxx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:LGqs2Mqz4bbSJd1zw3QtpCdKZDuErmCP+iPAL/5ih2Q.
Are you sure you want to continue connecting (yes/no)? 

はじめてアクセスするサーバーは上記のような警告が出ます。
ドメインやIPアドレスなど問題がなければ、yes を入力します。

GitLabやGit-HubのWebフック先のデプロイスクリプトなどで、自動的にSSHアクセスする場合などは、この警告をクリアできず、ドハマリすることがあります。

その場合、該当ユーザで、一度手動でデプロイスクリプトを実行しておくか

~/.ssh/config

に下記を追加しておくと警告が出ません。(このファイルもパーミッションは 600 )

host *
StrictHostKeyChecking no

サーバーのIPアドレスが変わった場合には

Warning: Permanently added the RSA host key for IP address '192.168.56.50' to the list of known hosts.
Last login: Sat Sep 24 00:17:24 2016 from 192.168.56.1

上記のメッセージが出ます。

その場合は、接続元のPC(サーバー間の場合は接続元サーバー)の

~/.ssh/known_hosts

から接続先ホスト名で検索して、古い情報を行ごと削除すれば解決します。

-linux
-