SSH, SFTPを使う

SSH (Secure SHell) は従来のTelnetやrloginに相当するリモート通信を暗号化してセキュリティを向上させたものです。

SFTP (Ssh File Transfer Protocol) はSSHを利用したFTPでファイル転送のセキュリティが向上します。

Ubuntu Server のIstall時、あるいは、taskselでOpenSSHを選択していれば、SSH / SFTP共に使用できる状態にあります。

ここではUTF-8とSSHに対応したターミナルエミュレータ Tera Term Professional と、ファイル転送には WinSCP を使用します。

鍵の作成

暗号化および復号を行う際の鍵を作成します。今回は Tera Term, WinSCP どちらにも使用できる PuTTYgen を使用します。リンク先からputtygen.exeをダウンロードして実行します。Installは不要です。

PuTTY Key Generator起動画面

そのまま Generate ボタンをクリックします。

PuTTY Key Generator ランダマイズ

ステータスバーが100%になるまでマウスカーソルをグリグリ適当に動かします。すると、下のような画面に切り替わります。

PuTTY Key Generatorパスフレーズ入力

パスフレーズ(接続するときに入力するパスワードになります)を入力します。 Key passphraseConfirm passphrase の欄2ヶ所に同じものを入力します。

入力を終えたら、Save public key ボタンをクリックして、公開鍵を保存します。Save private key ボタンもクリックして、秘密鍵も保存しましょう(拡張子ppk)。

SSH の設定 (その1)

Tera Term で接続できるように設定します。

最初だけ、鍵が無くても通信ができるように、設定変更します。

$ sudo nano /etc/ssh/sshd_config
次のような固まりがあります。yesとすることでチャレンジレスポンス認証が可能となります。
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes

編集し終えたら、設定を反映させましょう。

$ sudo /etc/init.d/ssh reload

一応、状況を確認してみます。

$ sudo lsof -aPi:22
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    4155 root    3u  IPv6  11143       TCP *:22 (LISTEN)
$

Tera Term で接続 (その1)

Tera Term Professional をダウンロードしてInstallし、実行します。

Tera Term 起動

ホストにUbuntu ServerのIPアドレスを入力して、OK しましょう。

Tera Term チャレンジレスポンス認証

チャレンジレスポンス認証が選択されていることを確認して、OKします。

Tera Term チャレンジパスワード入力

パスワードを入力するわけですが、ここでは上記鍵を作成した時のパスフレーズではなくて、Ubuntu Serverのユーザーパスワードになります。

入力したら、OKします。

SSH の設定 (その2)

チャレンジレスポンス認証ができる状態のままではセキュリティの面でマズいので、設定しなおします。

まず、上記鍵で接続ができるようにします。接続したいユーザーのホームディレクトリ配下に .ssh ディレクトリを作成します。次に、作成したディレクトリに authorized_keys ファイルを作成し、そこに上記鍵の作成で保存した公開鍵の内容をコピーします。手で入力するのは大変ですし間違え易いので Tera Term にある機能を使用しましょう。

$ mkdir .ssh
$ cat > .ssh/authorized_keys

ここで、Tera Term のメニュー「ファイル(F)」→「ファイル送信(S)...」を選択するとダイアログが出ます。

公開鍵ファイル選択
ここではたまたまid_rsa.pubというファイル名になっていますが、ここは皆さんが上記鍵の作成で保存した公開鍵 (Public Key) のファイルを選択してください。

するとファイルの内容が流し込まれます。そしたら [Ctrl+D] でcatコマンドを終了します。

一応、more .ssh/authorized_keys などと打って確認してみても良いでしょう。

ちなみに、この公開鍵はAsciiファイルで途中で改行とか入っても大丈夫なようです。

次に上記SSHの設定(その1)で編集した/etc/ssh/sshd_configファイルを再び編集します。

yesとしていたチャレンジレスポンス認証をnoに戻します。

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

その他、必要に応じて編集します。例えば、、、
DefaultのTCPポートをセキュリティ向上のために変更する。22以外の数値にします。

# What ports, IPs and protocols we listen for
Port 22

接続できる(Ubuntuの)ユーザーを制限する。以下の行を追記します。(xxxxxはユーザー名)

AllowUsers xxxxx

GUIの無効化(厳密には正しくない言い回しだと思いますが)。noにします。

X11Forwarding no

編集が終ったら、先ほどと同じ様に設定反映をしておきましょう。

$ sudo /etc/init.d/ssh reload

Tera Term で接続 (その2)

Tera Term をもう一度実行するか、既に開いている Tera Term メニューの「ファイル(F)」→「新しい接続(N)」を選択します。

ダイアログが出たら、IPアドレス・Port番号が合っているか確認してOKすると、認証画面が出ます。

Tera Term 鍵認証

鍵を使うようになっているかと思います。パスフレーズには鍵作成時に入力したパスフレーズを、RSA/DSA鍵を使うの欄には鍵作成時に保存した秘密鍵のファイルパスを入力します。

「秘密鍵(K)」ボタンをクリックするとファイル選択ダイアログが出ますのでそれで選択した方が確実かも知れませんね。

これで、接続ができたら完了です。接続するホスト(IPアドレス)やTCPポートなどはTera Term メニューの「設定(S)」→「TCP/IP」を選択して出るダイアログにて編集した後、「設定(S)」→「設定の保存(S)」で保存しておくと便利でしょう。(これをやらないとTera Termは設定を記憶してくれません。)

WinSCP で接続

WinSCP をダウンロードしてInstallし、実行します。既に鍵のセッティングは済んでいるのでもう簡単です。

WinSCP 初期画面

「新規(N)」ボタンをクリックします。

WinSCP 接続設定

ホスト名にはUbuntu ServerのIPアドレス(Hostsとか設定してあればホスト名でも可)を、
ポート番号には上記SSHの設定で設定したTCPポート番号を、
ユーザ名・パスワードにはUbuntu Serverのユーザ名・パスワードを、
秘密鍵には上記鍵作成時に保存した秘密鍵のファイルパスを(「...」クリックでファイル選択ダイアログが出ます。)
それぞれ入力すると「ログイン」ボタンがクリック可能になるのでクリックします。

WinSCP パスフレーズ入力

上記鍵作成時に入力したパスフレーズを入力して、OKします。

Tera Termの接続に成功していれば、成功すると思います。上記の設定画面に戻って設定を保存すると便利でしょう。

[記事作成日: 2009-05-13]

Homepage banner and link for this title's top page
Top > Knowledge > Ubuntu 8.04 LTS Server > SSH, SFTPを使う
このエントリーをはてなブックマークに追加
DELL Web広告 限定ページ
Microsoft Surface
【NEC得選街】おすすめPCはこちら
mouse computer 今月のキャンペーン一覧はこちら!
NEC ビジネスPC お得なアウトレット
デル特急便(ノートブック)
NECアウトレット商品ノートPC
レノボ・ショッピング 短納期モデル
マウスコンピューター/G-Tuneデル株式会社デル株式会社