引数 for X11 forwarding

-XEnables X11 forwarding.
-xDisables X11 forwarding.
-YEnables trusted X11 forwarding.

公開鍵を使ったパスフレーズ無しでのログイン

ログインする側(local)のマシーンで、

ssh-keygen -t rsa

でパブリックキーを作成。パスフレーズは無し。 「id_rsa.pub」が作成されるので、これを「authorized_keys」にリネーム。

mv id_rsa.pub authorized_keys

「authorized_keys」をログインしたいマシーン(server)の、 「~/.ssh」(rootであれば「/root/.ssh」)にアップロードする。 ちなみに以下のようなアップロード専用コマンドがある:

ssh-copy-id -i .ssh/id_rsa.pub user@remote.host.com
注意
ログインする側(local)のマシーンが既にログインされる側である場合、 当然「authorized_keys」がある。ここで作成した「authorized_keys」を上書きしてしまうと、このマシーンへの(パスワード無し)ログインが出来なくなる。 ログインするされるをきちんと区別して適切に「auyhorized_keys」を設置しましょう。
注意
リネーム、転送をする際に所有権・グループが変化する恐れがある。所有権・グループの設定は適切に。ログインする権限(rootであればroot、一般ユーザーであればそのように)。
注意
.sshを「700」、authorized_keysを「600」に設定。他人に見られたら困る。

公開鍵を使ったパスフレーズ無しでのログイン[Windows編]

Windowsの場合、コマンドラインで公開鍵、プライベート鍵を作成することができない。 ここでは広く使われているWindows用SSHクライアントである「PuTTY/PuTTYgen」を使う。

  1. PuTTYgenを起動し「Generate」を選択後、「マウスを適当に動かせ」といわれるので、 なすがままにマウスを動かす
  2. 「Save public key」でpublic keyを保存する。
  3. 「Save private key」でprivate keyを保存する。
  4. 何らかの方法でログイン対象の「$HOME/.ssh」にpublic keyをコピーする。
  5. 「PuTTYgen」で作成されたpublic keyはOpenSSHに対応していない。 そこで変換する必要がある:
    ssh-keygen -i -f putty.pub > puttyk.pub
  6. 「authorized_keys」を設定する:
    cat puttyk.pub >> authorized_keys
注意
権限の設定を忘れずに:
chmod 700 ${HOME}/.ssh
chmod 600 ${HOME}/.ssh/authorized_keys
  1. PuTTY設定で「接続-SSH-認証」の箇所で「認証のためのプライベートキーファイル」を先に作成したprivate keyに設定する。

公開鍵を使ったパスフレーズ有りでのログイン

プライベートキーを作成

ssh-keygen -t rsa

パスフレーズ有り。

パスフレーズ無しでプライベートキーを作成していた場合、以下の様にキーペアを変える事無くパスフレーズを追加出来る

ssh-keygen -p

to make your life easier by ssh-agent

ssh-agentが起動していなければ起動、

ssh-agent bash

ssh-agentにパスフェーズを登録

ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/chinoney/.ssh/id_rsa: 
Identity added: /Users/chinoney/.ssh/id_rsa (/Users/chinoney/.ssh/id_rsa)

参考: Working with SSH key passphrases

Port forwardingを利用する

sshでのアクセスが「hoge.astr.tohoku.ac.jp」だけに許されており、 それ以外の「astr.tohoku.ac.jp」ドメイン内のサーバーへのアクセスが禁止されている場合がある。

その場合でも、以下のようにportを転送することで、アクセス可能である:

ssh -l 9022:localhost:22 username@hoge.astr.tohoku.ac.jp
ssh -l 9122:aho.astr.tohoku.ac.jp:22 username@hoge.astr.tohoku.ac.jp
ssh -l 3366:db.astr.tohoku.ac.jp:3306 username@hoge.astr.tohoku.ac.jp
ssh -l 5911:desktop.astr.tohoku.ac.jp:5901 username@hoge.astr.tohoku.ac.jp
ssh -p 9022 username@localhost
ssh -p 9122 username@localhost
mysql -p -u username -D db_name -h 127.0.0.1 -P 3366
vncviewer localhost:5911

(ssh_)configを設定する

sshを使う際に、いろいろとオプションを付けて立ち上げることも多いと思うが、その度に「ssh -L 9022:localhost:22 hoge@...」等と打つのは面倒くさい。 そこで、設定ファイルを活用して、オプションの入力を省く。 設定ファイルは一般ユーザーであれば「~/.ssh/ssh_config」に記述する。

Host     hoge
HostName hoge.ac.jp
User     username
LocalForward    8080    localhost:80
LocalForward    5911    huga:5901
Host hogelogin
HostName hogelogin.kek.jp
User username
LocalForward 9122 huga.kek.jp:22
LocalForward 5901 localhost:5901
ForwardX11 yes
Host huga_localhost
HostName localhost
User username
Port 9122
ForwardX11 yes
Host server
HostName server.kek.jp
User chinoney
ForwardX11 no
Compression yes
CompressionLevel 1

参考: SSH_CONFIG (5), ssh ポート転送(port forwarding)

「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」と怒られる

ssh -L 9022:localhost:22 chinoney@hoge
ssh -p 9022 chinoney@localhost
ssh -L 9122:huga:22 chinoney@aho
ssh -p 9122 chinoney@localhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

解決法
「~/.ssh/known_hostsの何行目がバッティングしている」と警告が出るので、そのたびにその行を削除する。面倒!

参考: ssh を踏み台にして ssh を使う

(ssh_)configを設定し多段sshを簡単に

local -> login -> server

Host login
HostName login.kek.jp
User chinoney
IdentityFile ~/.ssh/id_rsa

and

Host server
HostName server.kek.jp
User chinoney
ProxyCommand ssh login nc %h %p
IdentityFile ~/.ssh/id_rsa

or

Host server
HostName server.kek.jp
User chinoney
ProxyCommand ssh login -W %h:%p
IdentityFile ~/.ssh/id_rsa

if open ssh ver ≥ 5.4

you can login server via login by "ssh server".

参考: 多段ssh設定のまとめ