サーバ側でssh-kengenで鍵を作った後に、Windows上でputty及びWinSCPで利用する為の一連の流れをイラストレーターやホームページ管理者の方向けに記載しました。Linux初心者向けの内容なので画像を多用し、説明もニュアンスが伝わるように噛み砕いています。
<なぜ鍵を使うか>
SSHでパスワード認証を使えば簡単な物を、わざわざ手間をかけて公開鍵認証を行うかと言うと、一言で言うと、セキュリティが圧倒的に強固になるからです。詳細はwikipediaでの解説を見てください。
- 対象サーバでsudoでadduserを実行する
- su – コマンドを使って追加したユーザー(今回はtestuser)になる
- testuserでssh-keygenを実行。途中でパスフレーズを求められても空エンターでOK(パスフレーズを入れると、都度パスを聞かれて面倒になる)
- ~/.ssh/id_rsaが秘密鍵なので、それをcatコマンドで表示させて、windowsのテキストエディタなりに張り付けて保存
- 上記で保存した秘密鍵をputtygenで読み込んでputty形式に変換する
- puttyで利用できるようになる
- WinSCPでも利用できるようになる
- 【任意で実行】sudo出来るようにする場合
※ 本投稿では、対象のUbuntuLinuxサーバに、testuserと言うユーザーを作って、そのユーザーでSSHやSCPが出来る所までを書いていま す。Ubuntuでadduserしただけだと、sudoするための設定等も行われないので、多少間違った事をやってしまっても大丈夫なユーザーアカウン トをセットアップする事が可能です。(最後にsudo出来るユーザーにする方法も書いておきます。)
sudo adduser testuser # ユーザー `testuser' を追加しています... # 新しいグループ `testuser' (1002) を追加しています... # 新しいユーザー `testuser' (1002) をグループ `testuser' に追加しています... # ホームディレクトリ `/home/testuser' を作成しています... # `/etc/skel' からファイルをコピーしています... # 新しい UNIX パスワードを入力してください: # 新しい UNIX パスワードを再入力してください: # passwd: パスワードは正しく更新されました # testuser のユーザ情報を変更中 # 新しい値を入力してください。標準設定値を使うならリターンを押してください # フルネーム []: testuser # 部屋番号 []: # 職場電話番号 []: # 自宅電話番号 []: # その他 []: # 以上で正しいですか? [Y/n] sudo su - testuser cd ~/ ssh-keygen -t rsa # Generating public/private rsa key pair. # Enter file in which to save the key (/home/testuser/.ssh/id_rsa): # Created directory '/home/testuser/.ssh'. # Enter passphrase (empty for no passphrase): # Enter same passphrase again: # Your identification has been saved in /home/testuser/.ssh/id_rsa. # Your public key has been saved in /home/testuser/.ssh/id_rsa.pub. # The key fingerprint is: # 1a:ac:52:7a:fb:e1:93:68:2b:47:57:70:ef:1b:30:8d testuser@servername # The key's randomart image is: # +--[ RSA 2048]----+ # | | # | . . | # | o + | # | . E o | # | . o.S+ | # | o...o o | # | o.ooo. o | # | .o+oo. . | # | +ooo. | # +-----------------+ cd ~/.ssh # こちらが、公開鍵です。authorized_keysと言う名前にする事で、 # sshでの接続時に、秘密鍵を使うように指定されていたら、デフォルトでauthorized_keysと比較し、 # 対応する公開鍵、秘密鍵のペアであれば、認証OKと言う事になります。 mv id_rsa.pub authorized_keys # id_rsaが秘密鍵です。 # 他の人には絶対に知られてはいけません(下記の内容は公開してしまったのでこの投稿を書いた後に削除しています。) cat ~/.ssh/id_rsa # -----BEGIN RSA PRIVATE KEY----- # MIIEowIBAAKCAQEA3BGKvxabYvhQDVH9afKBiZiC+9Wg/rEg87sv2x6E9jyTmSdE # Fuv0O+aleR/hSBQljtxtb6nlhY/P+92hJyi/YjCWFtucfoZ+kgYSMspioymXbqPG # soF/mviU5daLS/IT7tN90iC/i/CZQ+UPLBp0W50m2tVyFRRpLmxkK6KxoI/uXQgi # C0Fe6DvSyWLWlScxFXLpghz5gWNE2qHMNeWnFa+io2SXFzrnrDDkMcDHZ0gw2mXB # aYjLgSUeBoWl5SBl8yJXX64IBrUz/LJiBq47OdCkdj+QjJ6HIhnlacAUNiSvwAEV # IvYLZopWoNWmWX03rgc9B87ttywMwMHUPbXVnwIDAQABAoIBAQC56/gUSL0ueCrp # lgNKpx7ZaIgAyxMhGfSE9fgQX1Bl1/e6xHm6A85rbQkPs+dYRe0VLRUn6ZmHpWBJ # oYys0Lgf9HxZA2DLZEU6iPaHAoUi49iUGLmdxdpQywLAyukUWIiOlQ8Pn6s0Ryi1 # O6f90rvLSpGw//NJ69yQ4/IdC26V/nJ7iG7Wj2O0cI3IBJZkDYm5bNWjrknqAflT # f2TB5/Ss7w6TJYuV9n9yHFfAIwo6jN+NnjDTkNFsXsYOPzHtmJH3oyl1QGrBfFCI # ITCAoj/2XuiOfhKPi/6X3cF/vq5/4SasEUs8JTUkz/jPz558F7kAvC7GaY4c7yQM # 5ffzF80BAoGBAPGnzlsYqJBeBnvmWt8pf1BG8QAfZqEqVk8PWq0v/OjKdDVfiFo+ # NOv0u1rMPdMTDt8z/sP0l1tWhB84VADc6tYJAg5ac8ou95jNUtftjv6Kid/DcaXn # xdBiKSMTKjd4MI19fxJN+9QfoMJWc7OPDSWzqJS+fVVPR8mHfNU2uJkxAoGBAOkh # s1k+SMoVYLeSt6JOYSDzPnw6opqo45dWDobrN+f1LcL+vvw/u1oJE3h4zox5sqH6 # c5LPTKEwlUuunj5BPAmIc6cxMtgA6d9fOpWqzvfrY3oHqcYJNDuiCIljDMCskgvI # jkHyYar4B0rU52mCBZe6R/LOlo8Eg+bq9Gl586fPAoGANuSebHUKfVjOckCebcj4 # YZzry9JWNs/uMSFUwLiA48RxZ1pfF9i/nsXF9VclyBexLiSaf5rE8vuRIaJi+ps0 # QRBkxivn14qZtb0WT3RoIgwIS6sS2tPuTGqv24bT9Su5I7rZLahHRyU0GFEZETWy # j9jit38Z61IKBY5gXfKDNlECgYAx4ToEUCU2x5gn7sZHfcmeSS0HW2xK9vOq/4ig # KVeO05B09hha1C/7tZFq5z4aJDeqHHH56UyV+FUZGkVVQJPd3koQbaBZQujHGBLq # zt71gHGKPHWAn5uDXsnAy2aBGusshj6ZsYhgEi1NP3w7wMv9iKe4NadU9jxafc7J # eoQ9VQKBgBbHhcl89fja2VySO9iMeKdzxPmBzo7mMB9qQi34E/KpOESOU1M2MJir # yoY8FCXf1+458SELu/h+jJhW9cWNcj648zCC4mLITnVlUFZDFzwPze9hDBlY01Le # LIm9mxhokld/fTEGG4o86z53nc7GIb6TydZIb57vSm6JZXFfYkjs # -----END RSA PRIVATE KEY----- # 秘密鍵をローカルにダウンロード出来たら削除してOK。 # 第三者に知られないように管理してください。 # ちなみに、削除するのは、本セットアップが全部完了してからでOKです。 rm ~/.ssh/id_rsa
~/.ssh/id_rsaで表示した鍵を全部コピーして、下記のように貼り付けます張り付ける対象は、ただのテキストファイルで大丈夫です。(秀丸アイコンになっているのは気にしないでください)testuser.txt等の名前でかまいません。
張り付けている所。
次に、puttyのダウンロードページからputtygenをダウンロードして、好きな場所に格納します。C:\Program Files (x86)\putty等のディレクトリを作って、その下に格納すれば良いです。putty.exeは最新版を持っていなければ、一緒にダウンロードしてください。
putty.genを実行して鍵をインポートします。
上記で作成していたtestuser.txtを読み込みます。
読み込みボタンを押して、先ほど保存しておいたtestuser.txtを指定します。
外部の鍵のインポートに成功しましたと出るのを確認してOK。
OKボタンを押したら、下記のような画面になります。
で、秘密鍵の保存ボタンをクリックします。生成する鍵のビット数は、必要に応じて、2048や4096にしてください。
パスフレーズなしで保存します。マイドキュメントの下にでも保存すれば良いでしょう。
次にputtyを実行します。
事項直後の画面。まずは、ホスト名の所にIPアドレスを入れます。
ウインドウ>変換で、UTF-8を指定します。(最近はEUC-JPは少ないはずなので設定変更。)
接続>SSH>認証で、鍵を設定します。先ほどputtygenでインポート後にputtyように保存し直したtestuser.ppkを指定しています。
警告メッセージはそのままはいで。
ログイン時に、ユーザー名を入力すると、パスワードなしでログインできます。パスワードなしでログインしているのは、パスワードの代わりに公開鍵認証を使っているためです。パスワード認証よりもセキュリティが高いとされています。
SSH出来るだけだと、ファイル転送がSCPと言うコマンドラインからのみのままで不便なので、WinSCPと言うSCPをGUIで扱うためのソフトを使います。SCPは・・・安全なFTPとでも認識していれば大丈夫です。
WinSCPのダウンロードページから、WinSCPをダウンロードしてください。
ダウンロードしたWinSCPのインストーラを実行し、WinSCPをインストールしてからWinSCPを実行します。
新規をクリック。
赤枠内を設定。秘密鍵は、PuTTYで使ったものと同じものを指定します。パスワードは鍵を使うため不要です。
初回接続のみ、知らないサーバだよと警告してくれます。はいで。
WinSCPでログインすると、FFFTPを使ったFTP接続と同じような画面になります。これで暗号化した経路で安全にファイル転送が出来る様になりました。
最後に、adduserで作成したユーザーはセキュリティ上の設定でsudoが実行できません。もしも、sudo出来る様にしたければ、/etc/groupファイルを編集して、sudoのグループに、testuserを追加してください。恐らくはubuntuを最初にインストールした時のユーザーが既に設定されているはずなので、『,』カンマ区切りで指定すればOKです。