SSH の使い方

2011年4月9日

はじめに

Linux で SSH を利用する方法について。

サーバーへの接続

SSH によるサーバーへの接続は次のようにする。

$ ssh host

コマンドだけ実行させることもできる。

$ ssh host command

X を使う

オプション "-X" で X が使えるようになる。

$ ssh -X host

あるいは /etc/ssh/ssh_config の設定を以下のようにしておけば、オプションなしでも X が使える。

ForwardX11 yes
ForwardX11Trusted yes

データの転送

SSH でデータを転送するには SCP を使う。

$ scp file host:path  (サーバーに送る)
$ scp host:path file  (サーバーから受け取る)
$ scp -r dir host:path  (ディレクトリの転送)

公開鍵認証

公開鍵認証を使うと、パスワードなしでログインできる。

公開鍵認証とは

サーバーにログインするための認証としてはパスワードによるものが一般的であった。それとは別の認証方法として、暗号鍵を使うものがある。暗号鍵は暗号通信に使うものである。暗号通信の方法として秘密鍵方式と公開鍵方式がある。

秘密鍵方式では、名前の通り秘密の鍵を使う。その鍵が第三者の手に渡ると暗号データを解読されてしまうため、いかに鍵の不正入手を防ぐかが問題になる。

公開鍵方式では、鍵を公開する。なぜそれが可能かというと、データの暗号化と復号化に別の鍵を使うからである。公開鍵は暗号化用の鍵である。その鍵を第三者が入手したとしても、暗号化しかできないので問題ない。

公開鍵認証は次のように行う。クライアントは暗号化用鍵と復号化鍵を作り、暗号化用鍵をサーバーに渡す。サーバーはそれを使って秘密鍵を暗号化してクライアントに渡す。クライアントは復号化用鍵で秘密鍵を復号化する。復号化用鍵は一歩も外に出ていないので、第三者が転送経路中においてそれを入手したり、それを使ってサーバーの秘密鍵を入手するといった心配はない。クライアントは復号化した秘密鍵を使って認証を行う。あとは秘密鍵方式で通信を行う。

公開鍵認証ではパスワードなしで認証可能である。しかし、公開鍵方式は安全とはいっても、転送経路中における安全である。クライアントマシンごと奪われたらどうしようもない。そのため、パスフレーズの入力を課すこともできる。

設定

クライアント側で公開鍵を作る。

$ ssh-keygen -t rsa
(どこに鍵を作るか聞いてくる。変更しなければ Enter)
(パスフレーズの入力を聞いてくる。必要ないなら Enter)

デフォルトなら ~/.ssh/id_rsa に公開鍵 id_rsa.pub (テキストファイル) ができる。

サーバー側の ~/.ssh/authorized_keys にクライアントの id_rsa.pub の中身の文字列を追加する。