新人さんの流入の多い時期。
備忘を兼ね、纏めました。
[2016/03/09 更新]
デフォルトではssh接続は公開鍵認証ではなく、パスワード認証されるよう設定されています。
この状態では、パスワードを知っているサーバーに誰でもアクセス出来、プロダクト環境では危険です。
以降の操作において、コマンド窓は下記で統一してあります。
接続元でコマンド投入→ 薄いグレーの背景
接続先でコマンド投入→ 濃いグレーの背景
■クライアント(接続元)で鍵を作成
まず、クライアント(接続要求)側で鍵を作ります(例では、id_rsa_scps-ishikari-seagrape というRSA鍵を作成)
$pwd /Users/updeepdj/.ssh $ ssh-keygen -f id_rsa_scps-ishikari-seagrape -t rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa_scps-ishikari-seagrape. Your public key has been saved in id_rsa_scps-ishikari-seagrape.pub. The key fingerprint is: SHA256:aqMATv92Kzh1jBlyyavZjCqfFzqCVxt56SqXlpEjrNM updeepdj@hachimjp-mbp.local The key's randomart image is: +---[RSA 2048]----+ | | | | | . . | | . = | |.o oo*.S | |+++++++++ | |.+.=O@= | |* EOOB.o | |.*+*=oo.. | +----[SHA256]-----+
ssh-keygen:Windowsの場合はCygwinを使えば作成できます。
-f オプション
鍵の名前を指定します。指定を省略するとid_xxx、id_xxx.pubと言う名前で鍵が生成されます。
-tオプション
鍵の種類を指定します。DSA鍵を作成する場合は、-tの後にdsaをつけます。
■ホームフォルダ配下に .ssh フォルダが作成され、以下のような鍵が作成されます。
$ ll ~/.ssh| grep scps -rw-r--r-- 1 updeepdj staff 409 3 9 15:39 id_rsa_scps-ishikari-seagrape.pub 公開鍵 -rw------- 1 updeepdj staff 1675 3 9 15:39 id_rsa_scps-ishikari-seagrape 秘密鍵
→ id_rsa_scps-ishikari-seagrape
秘密鍵です。認証時に使うため、クライアント(接続元)に保存します。
→ id_rsa_scps-ishikari-seagrape.pub
公開鍵です。サーバ側に配置し、鍵認証でのリモートログオンが可能になります。
鍵を接続先サーバに登録
その前に
接続先ホストに ~/.sshディレクトリがない場合、mkdir -m 700 ~/.ssh で作成しておいてください。
scpコマンドで公開鍵(.pubファイル)を転送します。
$ scp ~/.ssh/id_rsa_scps-ishikari-seagrape.pub hachim@接続先ホスト:~/.ssh 192.168.1.100 ‘s password: id_rsa_scps-ishikari-seagrape.pub 100% 16 0.0 KB/s 00:00
sshでリモートサーバへ接続
$ ssh -l hachim 接続先ホスト hachim@接続先ホスト ‘s password:(パスワードを入力) Last login: Sat Apr 16 16:26:25 2015 from 192.168.1.55 $
authorized_keysというファイルに今回追加する公開鍵を追記します。
$ pwd /home/hachim/.ssh $ cat ~/.ssh/id_rsascps-ishikari-seagrape.pub >> ~/.ssh/authorized_keys authorized_keysに実行権限を600を付与します。 $ chmod 600 ~/.ssh/authorized_keys
scpでもってきた公開鍵(.pub)は削除します。
$ rm ~/.ssh/id_rsa_scps-ishikari-seagrape.pub $ ll ~/.ssh/ 合計 4 -rw------- 1 hachim hachim 409 3月 9 15:45 2016 authorized_keys
いったんログアウトしてログインしてみましょう。
$ exit Connection to dev.hachim.jp closed.
$ ssh -i ~/.ssh/id_rsa_scps-ishikari-seagrape hachim@[HOStNAME or IP ADDRESSS] Last login: Sat Apr 16 16:27:00 2015 from 192.168.1.55 ←成功 $
設定を間違っていなければ、パスワード無しで認証出来るようになったはずですが。。
毎回、鍵指定はめんどくさい。。
鍵認証部分の自動化
接続元:~/.ssh/config で接続先の秘密鍵を管理
ここにssh接続先のホスト情報追記し接続簡略化できます。
$ cat ~/.ssh/config | grep scps -A5 HOST scps ←ホスト名をつける HostName xx.xx.xx.xx ←接続先IP Port 22 ←接続先SSHポート番号 User hachim ←接続ユーザ identityFile ~/.ssh/id_rsa_scps-ishikari-seagrape ←本人であることを証明する本人しか持ち得ない秘密鍵の格納先
接続確認
$ ssh scps Last login: Wed Mar 9 16:17:10 2016 from p111061-ipngn4501 minatoku.tokyo.ocn.ne.jp←OK!!! [hachim@seagrape ~]$
最後にセキュリティ強度を上げたい場合
パスワード認証を不可にし鍵認証のみとしたい場合は、
/etc/ssh/sshd_configファイルに下記のとおり、
書きます。(PJのセキュリティ要件をご確認ください)
# vi /etc/ssh/sshd_config PassfwordAuthentication yes ↓ PasswordAuthentication no # service sshd restart sshd を再読み込み中: [ OK ]
以上です。