sshコマンド
暗号化されたネットワーク接続を介してリモートシステムに安全に接続します。
概要
SSH(Secure Shell)は、リモートコンピュータに安全にアクセスし、リモートでコマンドを実行するためのプロトコルです。安全でないネットワーク上で、二つの信頼されていないホスト間の暗号化された通信を提供し、telnetやrshなどの古いプロトコルに代わるものです。SSHは一般的に、リモートログイン、コマンド実行、ファイル転送、および他のアプリケーションのトンネリングに使用されます。
オプション
-p port
リモートホストに接続するポートを指定します(デフォルトは22)
$ ssh -p 2222 [email protected]
[email protected]'s password:
Last login: Mon May 5 10:23:45 2025 from 192.168.1.100
[email protected]:~$
-i identity_file
公開鍵認証に使用するアイデンティティ(秘密鍵)を読み込むファイルを選択します
$ ssh -i ~/.ssh/my_private_key [email protected]
Last login: Mon May 5 09:15:30 2025 from 192.168.1.100
[email protected]:~$
-v
詳細モード、接続問題のデバッグに役立ちます
$ ssh -v [email protected]
OpenSSH_8.9p1, LibreSSL 3.3.6
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to example.com port 22.
debug1: Connection established.
...
-L local_port:remote_host:remote_port
ローカルポートをリモートホストのポートに転送します
$ ssh -L 8080:localhost:80 [email protected]
[email protected]'s password:
Last login: Mon May 5 11:30:22 2025 from 192.168.1.100
-X
X11転送を有効にし、グラフィカルアプリケーションをローカルに表示できるようにします
$ ssh -X [email protected]
[email protected]'s password:
Last login: Mon May 5 14:45:10 2025 from 192.168.1.100
[email protected]:~$ firefox
-t
疑似端末の割り当てを強制します。リモートシステム上でインタラクティブなプログラムを実行する際に役立ちます
$ ssh -t [email protected] "sudo apt update"
[email protected]'s password:
[sudo] password for user:
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
...
使用例
基本的なSSH接続
$ ssh [email protected]
[email protected]'s password:
Last login: Mon May 5 08:30:15 2025 from 192.168.1.100
[email protected]:~$
リモートホストでのコマンド実行
$ ssh [email protected] "ls -la"
total 32
drwxr-xr-x 5 user user 4096 May 5 08:30 .
drwxr-xr-x 3 root root 4096 Jan 1 00:00 ..
-rw-r--r-- 1 user user 220 Jan 1 00:00 .bash_logout
-rw-r--r-- 1 user user 3771 Jan 1 00:00 .bashrc
drwx------ 2 user user 4096 May 5 08:30 .ssh
鍵ベースの認証を使用したSSH
$ ssh -i ~/.ssh/id_rsa [email protected]
Last login: Mon May 5 12:15:30 2025 from 192.168.1.100
[email protected]:~$
ポート転送(ローカルからリモートへ)
$ ssh -L 8080:localhost:80 [email protected]
[email protected]'s password:
Last login: Mon May 5 15:20:45 2025 from 192.168.1.100
ヒント:
パスワードなしログイン用のSSH鍵の設定
ssh-keygen
でSSH鍵ペアを生成し、ssh-copy-id [email protected]
で公開鍵をリモートサーバーにコピーします。これにより、接続ごとにパスワードを入力する必要がなくなります。
SSH設定ファイルの使用
頻繁にアクセスするサーバーの接続設定を保存するために、~/.ssh/config
ファイルを作成します:
Host myserver
HostName example.com
User username
Port 2222
IdentityFile ~/.ssh/special_key
その後、単にssh myserver
で接続できます。
SSH接続を維持する
タイムアウトを防ぐために、~/.ssh/config
ファイルに以下の行を追加します:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
鍵管理にSSHエージェントを使用する
ssh-agent
を起動し、ssh-add
で鍵を追加すると、セッション中にパスフレーズを繰り返し入力する必要がなくなります。
よくある質問
Q1. SSH鍵を生成するにはどうすればよいですか?
A. ssh-keygen
コマンドを使用します。デフォルトはssh-keygen -t rsa -b 4096
で、4096ビットのRSA鍵ペアを作成します。
Q2. SSH公開鍵をサーバーにコピーするにはどうすればよいですか?
A. ssh-copy-id [email protected]
を使用して、公開鍵をリモートサーバーのauthorized_keysファイルにコピーします。
Q3. SSHを使用してファイルを転送するにはどうすればよいですか?
A. SSHプロトコルを使用する関連コマンドのscp
(セキュアコピー)またはsftp
(セキュアファイル転送プロトコル)を使用します。
Q4. SSH接続がタイムアウトしないようにするにはどうすればよいですか?
A. SSH設定ファイルでServerAliveInterval
とServerAliveCountMax
を設定するか、-o
オプションを使用します:ssh -o ServerAliveInterval=60 [email protected]
。
Q5. SSH接続の問題をトラブルシューティングするにはどうすればよいですか?
A. -v
(詳細)オプションを使用し、より詳細な情報を得るには追加のv(-vv
または-vvv
)を使用します。
参考文献
https://man.openbsd.org/ssh.1
改訂履歴
- 2025/05/05 初版