#author("2016-04-19T15:55:06+09:00","default:wikiwriter","wikiwriter") &tag(ネットワーク,ssh); *目次 [#p8d799b1] #contents *関連ページ [#f06e0580] -[[Putty]] -[[github]] -[[Poderosa]] -[[./ポートフォワード]] *基本 [#j5374628] -公開鍵は相手ホストに渡す。秘密鍵は自分で持っておく。 *鍵 [#t921d788] **秘密鍵のフォーマット [#s2287732] 鍵ファイルの形式はクライアントによってまちまちなので非常にわずらわしい。形式がわからなくなったときはテキストエディタで開くとわかるかも。 ,形式,対応クライアント,ファイルの特徴 ,OpenSSH形式,UNIX系のsshコマンド,鍵ファイルの先頭に「-----BEGIN RSA PRIVATE KEY-----」。ファイル名はid_rsaとかで作られることが多い。 ,SECSH形式,Poderosa,鍵ファイルの先頭に「---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----」。 ,Putty形式,Putty,鍵ファイルの先頭に「PuTTY-User-Key-File-2: ssh-rsa」。ファイル名は*.ppk **鍵の生成(ssh-keygen) [#w71c5f20] -ssh-keygenで生成。出力場所に注意(途中ファイル名を聞かれるので明示したほうがいいかも)。 ssh-keygen -t dsa|rsa **鍵の生成(PuTTY Key Generator)[#k4f864f2] ***鍵の生成 [#x697b9e6] -最初に鍵のタイプを選択する(右側にいくほど強固)。Generateボタンを押し鍵を生成する。 #ref(select.png) -Key passphraseとConfirm passphraseの欄にパスフレーズを入力する。 ***秘密鍵の保存 [#r104cebf] -秘密鍵はクライアントによって形式がことなる。 -Puttyで使う場合は、Actions → Save private keyで保存する。拡張子としてppkをつけておけば区別しやすいかも。 -Poderosaで使う場合は、[Conversions] → [Export ssh.com key]で保存する。拡張子は特にきまってないらしい。 -UNIX端末なので使う場合は、[Conversions]→[Export OpenSSH key]で保存する。 ***公開鍵の保存 [#q42ceb43] -OpenSSHが動いているLinuxサーバーに持って行く公開鍵は、Key → Public key for pasting to OpenSSH authorized keys file:の欄にある内容をコピーして使う。Save public keyで保存するとダメ。 #ref(save.png) **鍵の変換(ssh-keygen) [#y71c079d] ***秘密鍵からパスフレーズを削除 [#u93e04e5] -以下のコマンドで実行。rsa形式の場合 # openssl rsa -in <元の秘密鍵ファイル> -out <変換後の秘密鍵ファイル> -dsa形式の場合 # openssl dsa -in <元の秘密鍵ファイル> -out <変換後の秘密鍵ファイル> ***秘密鍵から公開鍵を生成する方法 [#r345a8f0] -ssh-keygenコマンドを作成する。最後は秘密鍵名 ssh-keygen -y -f <秘密鍵名> **鍵の変換(Putty) [#r3208609] -puttyを使った鍵の変換は[[Putty]]へ *Tips [#vd097f09] ** sshコマンド [#y9941b1a] **~/ssh/configを使う [#vd899d59] -[[~/.ssh/config で簡単に複数ホストへのSSH接続を管理する - すぱぶらの日記:http://d.hatena.ne.jp/superbrothers/20090730/1248971671]] **指定コマンドしか実行できない設定 [#p6285b49] -リモートのauthorized_keysをいじればいける。例えばgrepとかバックアップ専用とか。 -[[SSH - 指定コマンドしか実行できない鍵の設定 - Qiita:http://qiita.com/tukiyo3/items/0fd9c6cb57a97cd8fdfa]] ** Macの特殊事情 [#yad2be9f] ***パスフレーズの入力に関して [#lb3d0946] -Macの場合パスフレーズ認証するとその内容がキーチェインに保存されるためパスフレーズを再度入力する必要がない。再度入力したい場合、キーチェインアクセスを起動し、SSH:/Usersの内容を探して削除したあと、ssh-agentプロセスを再起動すればよい。 ***秘密鍵の使い分け [#f1853211] -同一ホストに対する秘密鍵が複数存在しても適切に使い分けてくれない場合、~/.ssh/configに IdentitiesOnly yes を追加するとうまくいくかも。ssh-agentに保持されている鍵情報じゃなくてファイルを使ってくれるようになるらし。 *トラブルシューティング [#kfe1b53f] **なぜかログインできない!! [#h15f7496] -vつきで実行してみる。 ssh -vvv ホスト **Too many authentication failures for でログインできない [#s0586f82] -[[sshで「Too many authentication failures for ...」が出た場合の対処法 - tkuchikiの日記:http://tkuchiki.hatenablog.com/entry/2013/02/20/104609]]が参考に。ssh-agentに登録している鍵の数分試行錯誤してしまうことが原因らしい。 -登録を減らすか、.ssh/configで、identitiesOnly yesを追加する。Macの場合もキーチェインに登録してあったパスワードをつかってくれなくなる。 **Macでgit pullしてError: Permission denied (publickey) [#b3eeb251] -まず原因を解明するために、remoteリポジトリへsshログインしてみる。 -ssh hogehoge でログインしてもhogehogeに該当する秘密鍵が一切表示されない。ssh-add -lで確認してもいっさい使われない。 SSH_AUTH_SOCKは設定されている。 -どうやら.ssh/configに該当するホスト名はエイリアス名ではだめで、そのもズバリのエントリがないとだめみたい。 -git clone foo:/myrepo したならば、fooがbarのエイリアスだったとしても、fooのエントリが.ssh/configにないとみてくれない。