# ssh

モード
  非特権EXECモード
カテゴリー
  運用・管理 / Secure Shell

## 構文

コマンド構文

`> ssh [ip|ipv6] [user USERNAME] [port PORT] SERVER [TEXTLINE]`

## コマンド説明

SSHクライアントを起動し、指定したリモートSSHサーバーにログインする。またはリモートSSHサーバーにコマンド行を実行させる。

## パラメーター

`ip|ipv6`
  接続時に使用するプロトコルファミリー（ここではIPバージョンの意味）。本オプションを指定した場合は、指定したプロトコルファミリーでのみ接続を試行する。本オプションを指定しなかった場合は、利用可能なプロトコルファミリーを順番に試行するがその順序は不定
  `ip`
    IPv4だけを使う
  `ipv6`
    IPv6だけを使う
`user USERNAME`
  リモートSSHサーバーにログインするときのユーザー名。省略時はCLIログイン時のユーザー名と同じものが使われる
`port PORT`
  接続先TCPポート番号。省略時はssh client portコマンドで設定した省略時値を使う
`SERVER := {A.B.C.D|X:X::X:X|HOSTNAME}`
  リモートSSHサーバーのIPv4/IPv6アドレスまたはホスト名
`TEXTLINE`
  SSHサーバー上で実行するコマンド行。TEXTLINEは行末までがその値と見なされるため、スペースを含んでいてもよい。本パラメーターを指定したときは、指定したコマンド行の実行後にコネクションが切断される。本パラメーターを指定しなかったときは、SSHサーバーにログインして対話型セッションを開始する

## 使用例

SSHサーバー172.21.10.2にログインして対話型セッションを開始する。

    awplus> ssh user zein 172.21.10.2
    The authenticity of host '172.21.10.2 (172.21.10.2)' can't be established.
    RSA key fingerprint is SHA256:I3Tbsf+kH0PWeOXyMTNOTLgkz5woddKO8cPlH4RzINQ.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '172.16.10.3' (RSA) to the list of known hosts.
    Password:
    Last login: Sun Feb  5 22:01:07 2012 from 172.21.10.1
    Hello zein!

    zein@q1.example.com:~>

SSHサーバーdeliriumにIPv6経由でログインして対話型セッションを開始する。

    awplus# ssh user zein ipv6 delirium
    Password:
    Last login: Fri Feb  3 10:29:23 2012 from awplus

    zein@delirium:~> netstat -anWfinet6 | grep 2001\.\*22
    tcp6       0      0  2001:db8:3c:10::186.22                        2001:db8:3c:1
    0::5.56170                       ESTABLISHED

SSHサーバー172.21.10.2上でコマンド行「ls -l ~/tmp」を実行し、結果を端末画面に表示させる。

    awplus> ssh user zein 172.21.10.2 ls -l ~/tmp
    Password:
    total 2496
    -rw-r--r--  1 zein  neco 1060565 Jul  5 00:36 quagga-0.99.7_2.tbz
    -rw-r--r--  1 zein  neco 1450781 Jul  5 00:36 slaboot.tar.gz
    awplus>

## 注意・補足事項

リモートホストをIPアドレス（IPv4/IPv6）ではなくホスト名で指定するためには、あらかじめip name-serverコマンドでDNSサーバーの設定をしておき（初期状態では未設定）、ip domain-lookupコマンドでDNSへの問い合わせ機能を有効にしておく必要がある（初期状態で有効）。なお、指定したホスト名が複数のアドレスに解決された場合（IPv4アドレスとIPv6アドレスの両方が返ってきた場合や、複数のIPv4アドレスあるいは複数のIPv6アドレスが返ってきた場合など）の動作は次のとおり。

- ipオプションを指定した場合は、IPv4アドレスだけを使って接続を試行する。DNSサーバーから複数のIPv4アドレスが返ってきた場合は、接続に成功するまで各アドレスを順に使って接続を試行するがその順序は不定。どのIPv4アドレスでも接続できなかった場合はエラーになる。
- ipv6オプションを指定した場合は、IPv6アドレスだけを使って接続を試行する。DNSサーバーから複数のIPv6アドレスが返ってきた場合は、接続に成功するまで各アドレスを順に使って接続を試行するがその順序は不定。どのIPv6アドレスでも接続できなかった場合はエラーになる。
- ip、ipv6オプションを指定しなかった場合は、接続に成功するまでDNSサーバーから返ってきた各アドレス（IPv4、IPv6とも）を順に使って接続を試行するがその順序は不定。どのIPv4、IPv6アドレスでも接続できなかった場合はエラーになる。

## 関連コマンド