SSH鍵作成から初回アクセスまで

SSHの鍵作成とアクセスするまでの~/.ssh/configの設定の話です。

この記事は2022-01-18に更新されました。

 この記事は最終更新から2年以上が経過しています。

Placeholder

SSH鍵作成からアクセスまで


リモートサーバーにSSHでアクセスするとき、 適切な鍵が無い場合や鍵設定が不適切な場合は以下のようにパスワードを求められる。

$ ssh username@host
username@host's password: 

SSH鍵ペアの作成

ssh-keygenは公開鍵、秘密鍵のペアを作成するコマンド

SSH接続を受けるサーバー(ここではusername@host)上で鍵を作成する. 一旦パスワード等の別の手段でログインして以下の手順を行う.

SSH鍵作成コマンドの例は以下の通り

$ mkdir ~/.ssh && cd "$_"
$ ssh-keygen -t rsa -b 4096 -f id_rsa_example.com -C "your_email@example.com"
  • -t : 暗号化方式
  • -b : ビット長
  • -f : Keyのファイル名
  • -C : コメント

暗号化方式は一般に、2048bit以上かつ rsaecdsaed25519であれば良いようです。

$ ssh-keygen -t rsa -b 4096 -f id_rsa_example -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -f id_rsa_example -C "your_email@example.com"

対話形式で聞かれるので答えていく パスフレーズを入力(しなくてもいいが、した方がいい)

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa_example
Your public key has been saved in id_rsa_example.pub
The key fingerprint is:
SHA256:4Xk4zuEB2A9ey9zwI0H3TM9sRBZDcoPw9w+HZYjt3Gw your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
|        . o.o+X. |
|     o . . =.@ + |
|    . + =   = O o|
|     . O X   = B |
|      . S =   = E|
|       + * .   +.|
|        +       .|
|                 |
|                 |
+----[SHA256]-----+
$ 

公開鍵の配置

公開鍵をauthorized_keysに追加 このファイルが存在しない場合は作成しておく。 authorized_keysのファイル権限を0600に変更しておく

$ cat ~/.ssh/id_rsa_example.com.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authrized_keys

これで公開鍵が配置された

秘密鍵の配置

クライアントマシンにコピー

$ scp username@host:~/.ssh/id_rsa_example ~/.ssh/

id_rsa_exampleはどこに配置しても良いが、 基本的には~/.ssh/に置くのが良い。

クライアントマシンのssh接続設定

~/.ssh/configを下記のように記入していく、存在しない場合はファイルを作成

Host example.com (or your IPaddress)
  HostName example.com
  User username
  IdentityFile ~/.ssh/id_rsa_root_sugoude_old
  TCPKeepAlive yes
  IdentitiesOnly yes

~/.ssh/configには下記のような設定項目がある

オプション 内容
Host ホスト名
HostName ホストドメイン or IPアドレス
User sshログインするためのユーザー名
IdentityFile sshログインするための秘密鍵のパス
TCPKeepAlive 接続状態を維持するか yes or no
Port ポート番号
IdentitiesOnly 暗号鍵のみの認証か yes or no
ServerAliveInterval サーバーが応答しなくなってから、設定した秒数毎にパケットを送る
ServerAliveCountMax ServerAliveIntervalの試行回数

他にもたくさんあるようです。

接続の確認

$ ssh -v username@yourhostname
  ...
  debug1: Connection established.

色々と出てくるが、debug1: Connection established.と表示されていて 目的のサーバーにログインできていればOK

avator-image

wangchang

フロント〜バックエンド〜サーバー構築までをやっています。 最近はTypeScriptが好きです。 たまにPythonもやったりします。よろしくお願いします。

最近の投稿

Back to Blog Index