#
ドキュメント

Document

自分のための備忘録です。

SSHキーペア

SSH鍵作成

以下の記事を参考に作成します。

※ ファイル名を変更するにはfオプションでファイル名をフルパス指定します。
ファイル名を指定しない場合は、秘密鍵が$HOME/.ssh/id_ed25519、公開鍵が$HOME/.ssh/id_ed25519.pubになります。
RSA形式も同様にファイル名を指定しない場合は秘密鍵が$HOME/.ssh/id_rsa、公開鍵が$HOME/.ssh/id_rsa.pubになります

ed25519形式

$ ssh-keygen -t ed25519 -C "your_email@example.com"

RSA形式

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

ref. https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

作成した公開鍵はサーバーの.ssh/authorized_keysファイルに追記します(なければ作成します)。

秘密鍵パーミッション

秘密鍵は所有者にのみ読み書き権限を付与します(600)。
所有者以外に権限があるとpermission deniedになります。

追記
読み込み権限があれば良いので、400が最も安全なパーミッションで推奨値です。

秘密鍵のパスフレーズはコピー&ペーストはできません。
入力してください。

~/.ssh/config

SSHの設定を./ssh/configに記載できます。

ログイン情報記載

~/.ssh/config

Host example
    HostName        example.com
    IdentityFile    ~/.ssh/example.pem
    User            myuser

configで設定した環境に接続します。

$ ssh example

実行時にiオブションで秘密鍵を指定することもできます。

$ ssh myuser@xxx.xxx.xxx.xxx -i ~/.ssh/example.pem

パスフレーズに対応

MacOS Sierraは、パスフレーズを秘密鍵に設定した場合は、毎回入力する必要があります。
2度目以降パスフレーズを省略するときは~/.ssh/configに設定を追加します。

Host * 
  AddKeysToAgent yes
  UseKeychain yes 

ref.
[Sierra] macos Sierra に更新してから、毎回パスフレーズを聞かれてくることに対する対策 [ssh] - Qiita

.ssh/config設定例

Host *
  AddKeysToAgent yes 
  UseKeychain yes 

Host aws 
  HostName        52.68.24.79
  IdentityFile    /Volumes/production/application/min-ker.com/min-ker.com.aws.ssh/aws_ssh_key.pem
  User            ubuntu

Host aws2
  HostName        52.199.2.159
  IdentityFile    /Volumes/production/application/min-ker.com/min-ker.com.aws.ssh/aws_ssh_key.pem
  User            ec2-user

StrictHostKeyChecking

https://qiita.com/shotaTsuge/items/48bdaccdafa5475d9016

多段接続とポートフォワーディング

#--------------------
# 個人環境
#--------------------
Host gateway
Hostname xxx.xxx.xxx.xxx
User ubuntu
IdentityFile /path/to/sercret.key # --(1)
StrictHostKeyChecking=no

Host target
Hostname 10.xxx.xxx.xxx # プライベートIP
User ubuntu
# 秘密鍵がデフォルトの.ssh/id_rsaでない場合はこちらの設定が必要
IdentityFile /path/to/sercret.key # こちらは(1)と同じローカルの秘密鍵を設定する。
StrictHostKeyChecking=no
ProxyCommand ssh -W %h:%p gateway

フィンガープリント

秘密鍵からも公開鍵からも同じフィンガープリントになります。

フィンガープリント生成に使用する暗号学的ハッシュ関数はおもに2種類あります。

  • SHA256
  • MD5
# デフォルトはSHA256
$ ssh-keygen -lf id_rsa
// ssh-keygen -lf id_rsa.pub 同じフィンガープリント
2048 SHA256:xxxxxxxxxxxxxxxxxxxxxx id_rsa.pub (RSA)
# MD5
$ ssh-keygen -E md5 -lf id_rsa
// ssh-keygen -E md5 -lf id_rsa.pub 同じフィンガープリント
2048 MD5:91:db:XX:XX id_rsa.pub (RSA)

https://linuxfan.info/ssh-pubkey-fingerprint

SFTP

下記のようなSFTP情報が送られてきたときは以下でSSHへ接続できる場合があります。

SFTP
Address: example.vs.sakura.ne.jp
User: myuser
Pass: mypassword
$ ssh myuser@example.vs.sakura.ne.jp
password mypassword

FileZillaが対応いていない秘密鍵の形式のときはppkへ変更する旨のダイアログが表示される場合があります。
ppkへ変換すれば接続できます。