●sshコマンド
ssh [ オプション ] [ユーザ名@]接続先ホスト
・-l ログインユーザ名の指定(-lオプションと[ユーザ名@]両方を省略した場合は現在のユーザ名を指定)
・-p 接続先ポート番号の指定
・-i 秘密鍵のファイルを指定
・-o ssh-configで設定できるオプションの指定
sshコマンドは以下の順で取得した設定に基づいて動作。
- コマンドラインオプション
- ユーザ毎の設定ファイル(~/.ssh/config)
- システム全体の設定ファイル(/etc/ssh/ssh_config)
●ssh-agent
パスフレーズ付きの秘密鍵を使ってSSH接続する際に毎回パスフレーズを入力しないで済むようにするには、「ssh-agent」を使用。
「ssh-agent bash」コマンドでssh-agentはbashを起動し、バックグラウンドで動作。ssh-agentによって起動されたシェル内で子プロセスとしてssh-addやsshコマンドを実行すると、これらの認証エージェントとしてssh-agentが機能。
また、指定した文字列を評価後に連結して実行させるevalコマンドでssh-agentを起動することも可能。この場合、現在のシェルでssh-agentが動作。
●ssh-add -l
ssh-agentに登録された秘密鍵の一覧を表示する
●ssh-agent -k
ssh-agentを終了する
●SSH Agent Forwarding
ローカルホストから多段階でSSHアクセスする際に、パスフレーズを聞かれないようにしたり、秘密鍵を中継サーバに置かなくていいように、認証情報を転送する仕組み。
ローカルホストでのみ秘密鍵をssh-agentに登録しておけば、その後のSSH接続でもssh-agentが秘密鍵を引き継ぎ、複数のホストを経由した公開鍵認証が可能。
※ユーザの公開鍵は各サーバの「~/.ssh/authorized_keys」に登録しておく必要がある
●SSH Agent Forwardingを許可するには以下の設定が必要。
・SSHサーバの設定ファイル「/etc/ssh/sshd_config」で「AllowAgentForwarding yes」を設定。(デフォルトはyes)
・また、次のいずれかの方法で許可する。
- SSH接続時に、sshコマンドで「-A」オプションを使用。(「-a」オプションで禁止)
- 常に許可するには、SSHサーバのシステム設定ファイル「/etc/ssh/sshd_config」、または接続先ユーザの設定ファイル「~/.ssh/config」で「ForwardAgent yes」を設定する。
●SSHポートフォワーディング
SSHがポートを用意して通信を中継することをSSHポートフォワーディングという。また、SSHの暗号化接続内を通ることで、SSHサーバ・クライアント間でのHTTP通信は外部から内容を盗み見ることができなくなる。「SSHトンネリング」とも呼ばれる。SSHポートフォワーディング設定を行うことを「トンネルを掘る」ということもある。
■ローカルポートフォワーディング
-Lは「Local port forwarding」のためのオプション。
ssh -L 転送対象ポート番号:SSHサーバから見た接続先アドレス:SSHサーバからの接続先ポート番号 [SSH接続ユーザー名@]SSHサーバアドレス
■リモートポートフォワーディング
SSHサーバが転送用ポートを用意し、SSHクライアントの指定されたポートに転送
ssh -R 転送対象ポート番号:SSHクライアントから見た接続先アドレス:SSHクライアントからの接続先ポート番号 [SSH接続ユーザー名@]SSHサーバアドレス
●X11フォワーディング
ネットワークを介したXサーバ・クライアントの通信に特化し、通信の暗号化、設定作業を簡略化できる。Xサーバ・クライアント間の通信は暗号化されていないため、入力したキー情報など盗み見られる恐れがある。X11フォワーディングを使うことで、ローカルのXサーバとリモートのXクライアントで安全に通信を行うことができる。
この機能を使うには、SSHサーバの設定で「X11Forwarding yes」となっている必要がある。
ssh -X [SSH接続ユーザー名@]SSHサーバアドレス [Xクライアントコマンド]
-Xオプションを付けてssh接続すると、Xクライアントの表示用にDISPLAY環境変数が自動で設定される。
●SSHのデーモン「sshd」の設定ファイルは「/etc/ssh/sshd_config」。
このファイルで認証の方法などを設定。rootユーザのSSHログインの許可/不許可も設定可能で、不許可とする場合は「PermitRootLogin」の項目を「no」とする。(デフォルトはyes)