Help us understand the problem. What is going on with this article?

ssh config最強設定

更新履歴
(2017/01/22 Includeについて追記)
(2017/10/28 KexAlgorithm から ecdh を削除, Macs の順序を再考)
(2017/12/07 MacsからRIPEMD系を削除)
(2019/06/13 VSCode Remoteが使えないのでLogLevelを削除)
(2020/05/27 使えるCipherなどをリストアップするコマンドの説明を追加, 各種項目の見直し)
(2020/05/29 rsa-sha2-512,rsa-sha2-256 をHostKeyAlgorithmsに追加、ついでに接続互換性のために強度のひくいhmac-sha1をMacsに追加)

  • ssh/config のテンプレートとして使ってください。

  • ホストキーの順序を変えると @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ が出る場合があります

  • SSH鍵は ed25519 (エドワーズ曲線)を推奨します

  • ssh configは重複があると最初の項目が優先されます。このテンプレートは Include 文と併用してください。

    • Host *.example.com みたいなのは最初にかくこと
  • Includeは OpenSSH 7.3 から使えるっぽいです。以前のOpenSSHの場合、手動でファイルの内容を展開して単一のファイルで運用してください。

  • ちょっとだけ古いディストリビューションを利用すると、デフォルトでは古い暗号化スイートを使わされる。
    それを防ぐために暗号アルゴリズムの優先順位を明示的に記入。OpenSSHのデフォルト設定を参考に、その上で弱い暗号を削除している。

    • SHA1を使わない
      • RIPEMD160はオープンなので一応入れてある
    • RSAよりEC(楕円曲線)を優先
    • 暗号はパフォーマンスより強度を優先
      • ctrよりgcmを優先した
      • どうせAESならハードウェア支援が効く
    • 鍵付きハッシュでは安全と言われるetm (Encrypt-then-MAC; 暗号化の後にMAC)を優先する
  • AEAD の時代です。 GCM系の暗号を推奨します。

~/.ssh/ssh_config (いろいろHostを書くファイル)

普通の通りに書く。ただファイル名はssh_configとしておく。あとでIncludeされる。

Host ssh.example.com
    User ...
    HostName ssh.example.com
    ...

~/.ssh/config (デフォルト値用のファイル)

先頭にHostを書いたConfigのインクルードを書く
これによって config → ssh_config の順に適用されるが、重複項目は最初だけ適用されるのでデフォルト値はこのファイルから取られる。

AESを優先したい場合は Ciphers の順序を変更すること。多くのCPUでは、AES-NIによるハードウェアアクセラレーションが利用でき、高速化できる場合がある。

Include ~/.ssh/ssh_config

# お好みで
# LogLevel DEBUG
# LogLevel VERBOSE

##### 接続系 #####
# 圧縮。gitなどのファイル転送にも適用される、テキストやプログラムファイル多ければON
# 圧縮しづらいファイル転送や、tmux使うときは圧縮率が低いのでOFFでも可
Compression yes

# ネットワークコネクティビティを15秒ごとにチェック
# 3回失敗で切断
ServerAliveInterval 15
ServerAliveCountMax 3

# フォワーディング失敗時にExitするかどうか
# VPN代わりのトンネルを張り続けたいときに便利
# ExitOnForwardFailure yes

# 接続試行回数
ConnectionAttempts 3

##### コントロールマスター接続で永続化するかどうか #####
# ControlMaster auto
# ControlPersist 2h
# ControlPath ~/.ssh/master_%r@%h-%p

##### セキュリティ系!重要!! #####
# 以下は、OpenSSH 6.8を参考にしたもの。 
# あなたのCPU、接続先のサーバーがAES-NIに対応していなければ、 chacha20-poly1305@openssh.com を優先してみてください
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

# 鍵交換アルゴリズム、楕円曲線がナウくておしゃれ。あとは強度の順
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256,diffie-hellman-group-exchange-sha256

# 鍵付きハッシュのアルゴリズム
Macs umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-64-etm@openssh.com,umac-64@openssh.com,hmac-sha1

# ホスト鍵をモダンな順で検証
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,ssh-rsa-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa

# 鍵生成の頻度!あまり小さくするとパフォーマンスに影響。
# 第一引数は何バイトごとか、第二引数は鍵交換までの秒数
RekeyLimit default 60

# おまけ、ホストフィンガープリントを視覚的に表示
# VisualHostKey yes
  • 6.6より前のOpenSSHを使っている場合 (ssh -V) CiphersとKexくらいは上記に変えたほうがいい。

  • コントロールマスターの設定をすると、HTTP KeepAliveのように接続が永続化されるほか、複数のSSHを起動して接続してもコネクションは1本だけにできる(マルチプレクシング; 多重化)

  • さくらのレンタルサーバーに繋がらないときは、Macsあたりを変更すること。(2020/05/29にMacsに hmac-sha1 を追加したので、繋がるはず)

  • ヤマハルーターにつながらない時は KexAlgorithms diffie-hellman-group14-sha1,diffie-hellman-group1-sha1ssh-config の個別のホスト設定に書く

つながらない場合のssh-config

Host yamaha-router
  HostName 192.168.0.251
  User username
#  Ciphers aes128-ctr
  KexAlgorithms diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
  Macs hmac-sha1
Host sakura-rental-server
  HostName x.sakura.ne.jp
  User username
  Macs hmac-sha1

参考

OpenSSH で使える Ciphers/MACs/KexAlgorithms/PubkeyAcceptedKeyTypes の一覧

以下のように、コマンドを打つとあなたのPCで使える暗号化/MACの方式などをリストアップできます

Ciphers: ssh -Q cipher
MACs: ssh -Q mac
KexAlgorithms: ssh -Q kex
PubkeyAcceptedKeyTypes: ssh -Q key

$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com

$ ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com

$ ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org

$ ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
keiya
筑波大生です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした