最近はサービスをIPv4、IPv6の両方で提供しているケースも多いですよね。
でも、ssh接続ではIPv4でのみ接続許可のままなんて設定のサーバなどあると思います。
そんな場合、アドレスファミリーを指定しないで接続すると場合によってはIPv6で接続され、タイムアウトしclient_loop: send disconnect: Broken pipe
なんて言われちゃうケースもあるのでは?
なのでアドレスファミリを指定するsshオプションのメモ書きです。
まずはIPv4、IPv6を指定してSSH接続する方法
sshコマンドで、アドレスファミリーを指定するオプションは以下の通り。
アドレスファミリー | オプション |
---|---|
IPv4 | -4 |
IPv6 | -6 |
例えばIPv4を指定してssh接続するときは、以下のように指定します。
$ ssh -4 -i ~/.ssh/id_rsa -p 1234 -l hage www.hoge.com
ちなみに上記のその他のオプションは参考までに
オプション
オプション | 内容 |
---|---|
-i | 秘密鍵を指定 |
-p | ポート番号を指定 |
-l | ログインユーザー名を指定 |
.ssh/configでIPv4、Ipv6を指定する方法
さて、本題のアドレスファミリの指定の書式は以下となります。
AddressFamily [接続アドレスファミリ]
設定値
AddressFamily | 設定値 |
---|---|
default | any |
Ipv4 | inet |
Ipv6 | inet6 |
config記述例(IPv4を指定)
Host hoge
HostName www.hoge.net
User hage
Port 1234
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
AddressFamily inet
ここまで設定しておけば、接続は以下のコマンドで済みます
$ ssh hoge
以上です。
man ssh_config
でも確認できますね。
AddressFamily
Specifies which address family to use when connecting. Valid arguments are any (the default), inet (use
IPv4 only), or inet6 (use IPv6 only).