SSH関連の記事が増えてきたのでここまでの記事も含めてまとめ

~/.ssh/config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Host [設定名]
HostName [SSH接続先]
Port [ポート番号]
User [ユーザ名]
IdentityFile [鍵ファイル(あれば)]

// known_hostsのチェックをしない
StrictHostKeyChecking no

// 多段
ProxyCommand ssh -W %h:%p [踏み台ホスト]

// サーバ側の応答確認(keep-alive)
ServerAliveInterval 10

// 応答確認して応答が無い場合のリトライ回数(デフォルトは3)
ServerAliveCountMax 5
1
2
// 接続
$ ssh [設定名]

ポートフォワード

1
2
// -fN:バックグラウンド実行 ServerAliveInterval:Keep-aliveを送る
$ ssh -o ServerAliveInterval=30 -fN -L 8080:[接続先ホスト]:80 [踏み台ホスト]

パスワード自動入力: sshpassコマンド

1
2
3
4
5
6
7
8
// インストール(debian)
$ sudo apt-get install -y sshpass

// インストール(msys2)
$ pacman -S sshpass

// パスワードの自動入力
$ sshpass -p "[PASSWORD]" ssh user@hostname

他には、expectコマンドなどもあります。(※expectはSSH以外の用途にも使える)

パスワード自動入力: ssh-add

そもそも鍵ファイル自体にパスフレーズがかかってるのを省略したい場合

1
2
3
4
5
6
7
8
9
10
11
12
// MSYS2の場合のみeval実行
$ eval `ssh-agent`
Agent pid 3244

// 追加
$ ssh-add [鍵ファイル]
Enter passphrase for [鍵ファイル]: (パスフレーズ入力)
Identity added: [鍵ファイル]

// 確認
$ ssh-add -l
2048 SHA256:9wdnLaXG7EApk7b8jlAW7H4xpcjdCO8UrRJyus2QKyE [鍵ファイル] (RSA)

permission denied対策

1
2
// デバッグログ
$ ssh -vvv
  • ホームディレクトリ:755
  • .sshディレクトリ:700
  • authorized_keys:600
  • 秘密鍵:600
  • .sshディレクトリに[秘密鍵].pubが置きっぱなしだと出る場合がある