LoginSignup
429

More than 3 years have passed since last update.

多段SSHやポートフォワーディングを '.ssh/config' に書く

Last updated at Posted at 2014-05-14

SSHまわりで色々苦労したので、自分用メモを残します。

SSHの設定 (~/.ssh/のパーミッションの設定)

  • ~/.ssh/ : SSHの設定ファイルを置く場所
  • パーミッションの設定がシビアなので注意
$ ls -al ~/.ssh/
drwx------@ .               # ~/.ssh のパーミッションにも注意
drwxr-xr-x+ ..
-rw-r--r--  config          # SSH の設定ファイル
-rw-r--r--  known_hosts
-rw-------  authorized_keys # 公開鍵置き場
-rw-------  id_rsa          # 秘密鍵
-rw-r--r--  id_rsa.pub      # 公開鍵

パーミッションの設定

$ chmod 700 ~/.ssh

公開鍵認証

  • SSHを安全に行いたい
  • SSHするたびにパスワードを入力するのはめんどくさい

手順

クライアント側をclient、ホスト側(サーバなど)をhostとします。

1. クライアント側にてssh-keygenコマンドにて鍵のペアを作成

client
$ ssh-keygen -C "comment "                                      # -C はコメント(任意)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/lasta/.ssh/id_rsa): # 生成される鍵のファイル名の指定(任意)
Enter passphrase (empty for no passphrase):                     # 鍵へのパスワード(任意) ※注1
Enter same passphrase again:

※注1
: ここでパスワードをかけると、公開鍵認証をした上でパスワードも求められます

2. ホストへ公開鍵(.pubファイル)を転送

client
$ scp ~/.ssh/id_rsa.pub user@host:~/

3. ホスト側にて公開鍵を登録

host
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

鍵の登録が済んだら、host側ではid_rsa.pubを削除しても問題ありません。

公開鍵認証にてSSH接続を行う

client
$ ssh user@host -i ~/.ssh/id_rsa

パスワードを求められなかったら成功です。
秘密鍵の指定を毎度するのは面倒なので、対策はこの後説明します。

.ssh/config

  • SSHの設定ファイル
  • SSH接続の度に秘密鍵を指定するのは面倒
  • ホスト名とユーザー名を毎回書くのも面倒
  • 多段SSHの書き方いつも忘れる
  • shellのaliasは柔軟性がない(scpなどの時に困る)
client
$ ssh -i ~/.ssh/id_rsa user@host # この表記と
$ ssh host                       # この表記が等価になる
~/.ssh/config
Host         host           # 実際にコマンドで入力する名前 (任意)
HostName     host.hoge.fuga # ホスト名
User         user           # ログインユーザ名
IdentityFile ~/.ssh/id_rsa  # 秘密鍵のファイル名

多段SSH

  • client -> host1(踏み台サーバ) -> host2(目的のサーバ) とログインしたい
  • host2へ鍵を置くことも忘れない
user@local:~$ ssh user@host1
user@host1:~$ ssh user@host2

と毎度書くのは面倒です。

user@local:~$ ssh host2

だけで済ませたいですね。

~/.ssh/config
Host           host1
HostName       host1.hoge.fuga
User           user
IdentityFile   ~/.ssh/id_rsa

Host           host2
HostName       host2.foo.bar
User           user
IdentityFile   ~/.ssh/id_rsa
ProxyCommand   ssh -CW %h:%p host1

ポートフォワーディング

  • アクセス制限がかかったウェブページを外部から閲覧したい
  • 同様な環境からメールを送受信したい
  • コマンドが複雑で分かり難い
ポートフォワーディングの例
ssh -L 10025:localhost:25 user@host.hoge.fuga 

と毎度書くのは面倒です。

ssh phost

だけで済ませたいです。

多段SSHかつポートフォワーディングの場合
Host           phost1
HostName       host1.hoge.fuga
User           user
LocalForward   10025 localhost:10025
IdentityFile   ~/.ssh/id_rsa

Host           phost2
HostName       host2.hoge.fuga
User           user
LocalForward   10025 host2.hoge.fuga:25
ProxyCommand   ssh -CW %h:%p phost1
IdentityFile   ~/.ssh/id_rsa

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
429