文書の過去の版を表示しています。
ssh クライアントの使い方
単純に接続
$ ssh user_name@server_name.com
ポートを指定して接続
$ ssh user_name@server_name.com -p22022
接続先へポートフォワード
ローカルの8080ポートへの要求をリモートのlocalhost:80に転送
$ ssh user_name@server_name.com -L10080:localhost:80
ローカルの1022ポートへの要求をリモートの192.168.1.1:22に転送
$ ssh user_name@server_name.com -L1022:192.168.1.1:22
公開/秘密キーのペアの生成
- Linux or Mac では ssh-keygen を使用して、公開/秘密キーのペアを生成する。
(-C オプションでコメントを付加しておくとよい)
-t オプションには暗号タイプを指定する。
-b オプションには暗号強度の bit 数を指定する。
ECDSA の場合$ ssh-keygen -t ecdsa -b 521 -C "Tomoyan ECDSA"
RSA の場合
$ ssh-keygen -t rsa -C "tomoyan rsa" Generating public/private rsa key pair. Enter file in which to save the key (/home/tomoyan/.ssh/id_rsa): <- Enterキーを入力 Enter passphrase (empty for no passphrase): <- パスワードを入力 Enter same passphrase again: <- 確認用のパスワードを入力 Your identification has been saved in /home/tomoyan/.ssh/id_rsa. Your public key has been saved in /home/tomoyan/.ssh/id_rsa.pub. The key fingerprint is: 2f:13:c3:38:e5:fc:79:0a:b6:27:16:87:2b:b4:89:c2 tomoyan@tomoyan.net The key's randomart image is: +--[ RSA 2048]----+ | | | | | . | | * | | o S. | | ..o=.. | | . o o=++ . | | E . +.+=.o | | . o.o. | +-----------------+
公開キーはパーミッション: 644(rw- r-- r--)で ~/.ssh/id_rsa.pub に生成される。
秘密キーはパーミッション: 600(rw- --- ---)で ~/.ssh/id_rsa に生成される。
他からコピーしてきた場合など、クライアント側の秘密キーのパーミッションが適切に設定されていない場合は、警告が表示されて接続できないことがある。(以下は Mac OS X の警告の例)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '/Users/nakayama/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: /Users/nakayama/.ssh/id_rsa Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
その場合は、パーミッションを正しく設定しなおす。
$ chmod 600 ~/.ssh/id_rsa
公開キーの登録
- 公開キーは接続先のサーバーに転送しておく。
$ scp -P 22022 ~/.ssh/id_rsa.pub tomoyan@tomoyan.net:/home/tomoyan/.ssh id_rsa.pub 100% 397 0.4KB/s 00:00
- サーバー上でへ公開キーを登録する。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
※サーバー上に配置する場合はパーミッションに気をつける。(必ずHomeディレクトリのユーザーをオーナーとするように配置すること!!)
$ sudo chown tomoyan.tomoyan ~/.ssh -R $ sudo chmod 700 ~/.ssh $ sudo chmod 600 ~/.ssh/authorized_keys
パーミッションに誤りがあるとクライアントから接続が出来なくなります。(クライアントエラーの例)
$ ssh -i ~/.ssh/id_rsa_tomoyan tomoyan@tomoyan.net Identity added: /Users/tomoyan/.ssh/id_rsa_tomoyan (/Users/tomoyan/.ssh/id_rsa_tomoyan) Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
秘密キーを指定して接続
秘密キーを複数使い分ける場合は、-i オプションで秘密キーを指定する。(標準では ~/.ssh/id_rsa を使用)
$ ssh -i ~/.ssh/id_rsa_tomoyan user_name@server_name.com
※秘密キーは自分だけがアクセスできるように設定しておく
chmod 600 ~/.ssh/id_rsa_tomoyan
秘密キーのパスフレーズ変更
$ ssh-keygen -p -f .ssh/id_rsa Enter old passphrase: <- 古いパスフレーズを入力 Key has comment '.ssh/id_rsa' Enter new passphrase (empty for no passphrase): <- 新しいパスフレーズを入力 Enter same passphrase again: <- 新しい確認用パスフレーズを入力 Your identification has been saved with the new passphrase.
接続オプションを省略
接続先の設定を簡単に呼び出せるようにするために、ユーザー毎の設定ファイルを記述することができる。
~/.ssh/config の例:
Host tomoyan.net
HostName tomoyan.net
Port 22022
User tomoyan
GatewayPorts no
LocalForward 5900 192.168.1.100:5900
IdentityFile ~/.ssh/id_rsa
※LocalForward は 192.168.1.100:5900 を localhost:5900 に接続する。
sudo で Agent Forward する方法
sudo の設定ファイルに env_keep の設定を追記する。
$ sudo vi sudo
以下を追記する。
Defaults env_keep += "SSH_AUTH_SOCK"