カテゴリー : SSH

ssh 公開鍵・秘密鍵を作成するとき ssh-keygen で使ってるオプション

ssh 公開鍵・秘密鍵を作成するときに ssh-keygen コマンドで使っているオプションをご紹介します。

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/example.com -C who@example.com
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/yourname/.ssh/example.com.
Your public key has been saved in /Users/yourname/.ssh/example.com.pub.
The key fingerprint is:
SHA256:bDiAA/Rpt24cM3nlrCJBrWwsYQvass4z623oDowPIMA who@example.com
The key's randomart image is:
+---[RSA 4096]----+
|o.               |
|....o            |
|oEo=.o   .       |
|=.B.o.oo+        |
|=o.* *o.So       |
|=oo + =o.        |
|=... = .         |
|+*..o .          |
|+B*.             |
+----[SHA256]-----+

-t 鍵タイプを指定する(rsa/dsa)
-b 鍵の長さを指定する
-f 出力ファイルを指定する
-C 新しいコメントを追加する

$ ssh-keygen -l -f ~/.ssh/example.com
4096 SHA256:bDiAA/Rpt24cM3nlrCJBrWwsYQvass4z623oDowPIMA who@example.com (RSA)

-l 公開鍵の情報(種別、指紋、コメントなど)を確認する

僕個人の判断としては、2048bit RSA鍵で2030年まで戦えるらしいので当分それでいいと思っています。

という意見があるので、これで良しとしてます。

参考情報

[ssh] Warning: the RSA host key for ‘server_name’ differs from the key for the IP address ‘xxx’ の解決方法

EC2 instance を新しくした後 /etc/hosts を編集して、hostname はそのままで ip address だけ変更して ssh したら毎回下記のような警告メッセージが表示されるようになってしまいました。

[ec2-user@hoge ~]$ ssh server_name
Warning: the RSA host key for 'server_name' differs from the key for the IP address '10.123.123.123'
Offending key for IP in /home/ec2-user/.ssh/known_hosts:232
Matching host key in /home/ec2-user/.ssh/known_hosts:46
Are you sure you want to continue connecting (yes/no)?

known_hosts に host name と ip address の古い組合せの接続情報が残っているのが原因なので Matching host key in /home/ec2-user/.ssh/known_hosts:46 のメッセージに書かれているように known_hosts の 46 行目を削除しましょう。

[ec2-user@hoge ~]$ vim .ssh/known_hosts
# 46 行目を削除する

known_hosts を編集後、再び ssh します。

[ec2-user@hoge ~]$ ssh server_name
The authenticity of host 'server_name (10.123.123.123)' can't be established.
ECDSA key fingerprint is 6b:d3:33:ab:75:ee:50:dc:f0:0a:ca:7c:7e:bd:14:8e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server_name' (ECDSA) to the list of known hosts.

その後、切断してもう1度 ssh すると Warning メッセージが表示されなりました。

[ec2-user@hoge ~]$ ssh server_name
Last login: Thu Dec 31 00:48:26 2015 from forward_proxy1
 
       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

以上です。

[SSH] パスワード未設定な user で ssh 接続すると公開鍵認証のみでも失敗する

パスワード未設定 user で ssh 接続しようとすると公開鍵認証のみでも失敗してしまうみたいです。

-v オプションをつけて ssh 接続してみると Permission denied (publickey).

ssh your_usernama@123.456.789.123 -v
...
 
debug1: No more authentication methods to try.
Permission denied (publickey).

Permission denied (publickey). が表示されているときはサーバ上の /var/log/secure にログが出ているので確認してみます。

# tail -F /var/log/secure
Jun 28 18:44:57 host sshd[1370]: User your_username not allowed because account is locked
Jun 28 18:44:57 host sshd[1372]: input_userauth_request: invalid user your_username
Jun 28 18:44:57 host sshd[1372]: Connection closed by 123.123.123.123

sshd_config の設定でパスワードを設定していないユーザが ssh でログインできないようになっているようなので、おとなしく user にパスワードを設定します。

passwd your_username

セキュリティ高めるためにも user には最初からパスワード設定しましょう…。


参考情報

[SSH] Received disconnect from xxx : 2: Too many authentication failures for username

ssh で下記のようなエラーが発生しました。

ssh t_shigeoka@codenote.net -i ~/.ssh/id_rsa_t_shigeoka
Received disconnect from 184.169.144.233: 2: Too many authentication failures for t_shigeoka

サーバーにログインするための user を作成しまくって、接続テストをしていたため登録している鍵が多すぎてこうなってしまったっぽい。

ssh-add -D

して、エージェントから全ての鍵情報を取り除くことで解決しました。


参考情報

sshで「Too many authentication failures for …」が出た場合の対処法 – tkuchikiの日記

モバイル SSH クライアント「ServerAuditor」が Android や iPhone から使えて便利!

明日からお盆休みということで、iPhone からサーバーに ssh ログインできるように ServerAuditor というアプリをインストールしました。

ServerAuditor

下記、僕がつまづいた点を共有します。

ssh key の設定

ssh の秘密鍵は iTunes 経由でファイルをアプリに転送することができます。

コンソールをスクロールする方法

コンソールをシングルタップすると、編集モード (edit mode) とプレビューモード (preview mode) に切り替えることができます。編集モードとプレビューモードの見分け方は、キーボードの上部にカスタムキーボードが表示されているかどうかで判別できます。

迷いそうな点については help ボタンから詳しく確認することができます。

下記、2014/08/13 時点での help ページのスクリーンショットです。

ServerAuditor-help1

ServerAuditor-help2

ServerAuditor-help3

まとめ

気休め程度ですが iPhone からも ssh 接続できるようにしておくと休暇中も安心できそうです。はい。

[SSH] ~/.ssh/config で複数ホストへのSSH接続を管理しよう

SSH接続先をいちいちコマンドで打つのは面倒なので、 ~/.ssh/config で複数ホストへのSSH接続を管理しましょう。

参考情報

SSH_CONFIG (5)

~/.ssh/config で簡単に複数ホストへのSSH接続を管理する – すぱぶろ

[SSH] 秘密鍵を Dropbox にバックアップしつつ、シンボリックリンクを張って使えるようにする設定

ssh の秘密鍵を Dropbox にバックアップしつつ、シンボリックリンクを張って使えるようにする設定メモ。

$ cp .ssh/* ~/Dropbox/ssh/
$ chmod 600 ~/Dropbox/ssh/id_rsa
$ rm -rf .ssh/
$ ln -s ~/Dropbox/ssh/ .ssh

以上です。

【参考】

Linuxコマンド集 – 【 ln 】 ファイルやディレクトリにリンクを張る:ITpro

[SSH] 公開鍵の設置時に気を付ける事と、Permission denied (publickey,gssapi-with-mic). が出たときの対処方法

SSH の公開鍵をサーバーに設置した後、いざ鍵認証で接続しようとすると下記のようなエラーを出すことがよくあります。

Permission denied (publickey,gssapi-with-mic).

SSH公開鍵の設置時にやること

・リモート側の .ssh ディレクトリの Permission を 700 に変更する

・公開鍵ファイル(authorized_keys)の Permission を 600 に変更する

# chmod 700 .ssh/
# chmod 600 .ssh/authorized_keys

・リモート側の .ssh ディレクトリのアクセス権限を SSH 接続するユーザに変更する

・公開鍵ファイルのアクセス権限を SSH 接続するユーザに変更する

(例) 権限を ユーザ: codenote、グループ: programmer に変更する

# chown codenote:programmer .ssh/
# chown codenote:programmer .ssh/authorized_keys

以上です。

【参考】

sshで「Permission denied (publickey,gssapi-with-mic).」が出た時 – 今日とは違う明日

[SSH][Putty] ログイン先のサーバーでSSH公開鍵認証でログインしようとしたら Permission denied (publickey,gssapi-with-mic).

Putty でSSHでログインしたサーバーから更に、SSH公開鍵認証で他のサーバーにログインしようとしたらエラーが発生しました。

■ エラー内容

$ ssh example.com
Permission denied (publickey,gssapi-with-mic).

原因は、Pagent の認証鍵の転送の設定がちゃんとできていなかったためです。

認証鍵の転送

Pageant は ssh-agent と同じく、認証鍵の転送機能を持っています。これを利用すれば、たとえログイン先のサーバーに認証鍵がなくても、ローカルにある認証鍵を使用してログイン先からさらに別のサーバーに SSH 接続を確立できます。サーバーに秘密鍵を保存する必要が無いため、秘密鍵の流出の危険を大幅に削減できます。

Pageant による認証鍵の転送は以下の手順で利用できます。

1. Pageant を起動し、必要な認証鍵を登録する。

2. PuTTY を起動する。

3. 普通に SSH ログインするのですが、その際に [接続]-[SSH]-[認証] の「エージェントフォワーディングを認める」にチェックを入れておきます。もしくは、起動時に “-A” オプションを指定する方法もあります。

4. ログイン先で、さらに “ssh <ユーザー名>@<ホスト名>” などとしてさらに別のホストにログインします。

5. Pageant に必要な認証鍵が登録されていれば、正常にログインできるはずです。

なお、Pageant で認証鍵の転送機能を利用するためには、ログイン先の SSH サーバーが OpenSSH でなければなりません。本家 SSH は OpenSSH とは別のプロトコルを使用しており、そちらは Pageant ではサポートされていません。

・引用元:Pageant でパスフレーズの入力を省く – WebOS Goodies はてなブックマーク - Pageant でパスフレーズの入力を省く - WebOS Goodies

僕の場合は、Pageantへの認証鍵の登録はしていたのですが、「エージェントフォワーディングを認める」にチェックを入れていなかったので、正常に認証鍵の転送ができていなかったみたいです。

SSH公開鍵・秘密鍵ファイルをコピーして使ったら WARNING: UNPROTECTED PRIVATE KEY FILE と警告された

Mac をクリーンインストールして、前から使っていた SSH公開鍵・秘密鍵ファイルを ~/.ssh 以下にコピーして使ったら警告が出ました。

$ git push heroku master
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/bakorer/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/bakorer/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

調べたらドンピシャな記事がありました。

MacでSSH公開鍵・秘密鍵ファイルをコピーして使ったら警告がでた – アインシュタインの電話番号☎ はてなブックマーク - MacでSSH公開鍵・秘密鍵ファイルをコピーして使ったら警告がでた - アインシュタインの電話番号☎

SSH秘密鍵のパーミッションが 600 じゃないといけないということで、早速変更しました。

$ ls -al ~/.ssh/
total 24
drwxr-xr-x   5 bakorer  staff   170  2 11 11:49 .
drwxr-xr-x+ 26 bakorer  staff   884  2 11 11:39 ..
-rw-r--r--   1 bakorer  staff  1743  2 11 01:34 id_rsa
-rw-r--r--   1 bakorer  staff   410  2 11 01:34 id_rsa.pub
-rw-r--r--   1 bakorer  staff   405  2 11 11:49 known_hosts
 
$ chmod 600 ~/.ssh/id_rsa
$ ls -al ~/.ssh/
total 24
drwxr-xr-x   5 bakorer  staff   170  2 11 11:49 .
drwxr-xr-x+ 26 bakorer  staff   884  2 11 11:39 ..
-rw-------   1 bakorer  staff  1743  2 11 01:34 id_rsa
-rw-r--r--   1 bakorer  staff   410  2 11 01:34 id_rsa.pub
-rw-r--r--   1 bakorer  staff   405  2 11 11:49 known_hosts

今度はちゃんと git push できました。

$ git push heroku master
Everything up-to-date

以上です。