SSHと認証用の鍵でやりたいことをやりたい時にみてみるリンク集

|sshオプション|意味|参考リンク|
|:-:|:--|:--|
|-i|鍵を指定||
|-f|sshをバックグラウンドで実行する||
|-L|ポート転送する||
|-N|接続先のシェルを開かない||
|-o|設定ファイルと同じ形式でオプションを指定する|[ssh(1) manページ - nxmnpg.lemoda.net](https://nxmnpg.lemoda.net/ja/1/ssh)|
|-W|netcatモードを有効にする|[ssh ProxyCommandを利用した多段ssh - セキュリティ](https://kaworu.jpn.org/security/ssh_ProxyCommand%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E5%A4%9A%E6%AE%B5ssh)|

# 接続したい
```bash
# 接続に使用する秘密鍵ファイルを指定する
$ ssh -i {秘密鍵ファイル} {ユーザー名}@{接続先}

# 多段接続 : 踏み台の向こうにあるホストへ一発で接続したい
$ ssh -i {接続先鍵} -o ProxyCommand='ssh -i {踏み台鍵} -W %h:%p {踏み台ユーザ}@{踏み台アドレス}' {接続先ユーザ}@{接続先アドレス}

# 鍵と接続先をウッカリ逆にするとエラーになります。
$ ssh -i {ユーザー名}@{接続先} {秘密鍵ファイル}
Warning: Identity file {ユーザー名}@{接続先} not accessible: No such file or directory.
ssh: Could not resolve hostname {秘密鍵ファイル: Name or service not known
```
- [OpenSSH のコネクションが切れにくいように Keepalive を送る - CUBE SUGAR CONTAINER](https://blog.amedama.jp/entry/2018/11/10/224653)
- [多段SSHやポートフォワーディングを &#39;.ssh/config&#39; に書く - Qiita](https://qiita.com/lasta/items/41e95a2fdded18c34dae)

# ポートフォワードしたい

```bash
# リモートコマンドを無効にして(-N)秘密鍵を指定して(-i)ポート転送(-L)する
$ ssh -N -L {接続元で使うポート}:{接続先IPアドレス}:{接続先のポート} -i {踏み台での秘密鍵ファイル} {踏み台でのユーザー名}@{踏み台IPアドレス}
```

- [iptablesでやりたいことをやるためのリンク集 - Qiita](https://qiita.com/ponsuke0531/items/72814242f4ede26c57ab)
- [Puttyで踏み台を使ったポートフォワードを設定する方法 - Qiita](https://qiita.com/ponsuke0531/items/d046fc98af1930560200)
- [ポートフォワードをする - Qiita](https://qiita.com/ponsuke0531/items/6b6255c0402e6ea4a950)
- [~/.ssh/configについて - Qiita](https://qiita.com/passol78/items/2ad123e39efeb1a5286b)

# ファイルをほかのサーバに転送指定

```bash
$ scp  -i /path/to/{秘密鍵}.pem {コピー元ファイルパス} {ユーザー}@{コピー先IPアドレス}:{コピー先パス}
```

- [【scp】Linuxでリモート・ローカル間でファイルを転送するコマンド | UX MILK](https://uxmilk.jp/50946)
- [SCPで踏み台の向こうにあるホストへ多段接続してファイルを一発で送る方法 - Qiita](https://qiita.com/ponsuke0531/items/4721ac64f82a8e191580)

# 鍵を作りたい
```bash
$ ssh-keygen [オプション] -t 鍵タイプ [-N 新しいパスフレーズ] [-C コメント] [-f 鍵ファイル]
# パスフレーズを変更する
$ ssh-keygen -p [-P 古いパスフレーズ] [-N 新しいパスフレーズ] [-f 鍵ファイル]
# OpenSSH互換形式に変換してから標準出力に出力
$ ssh-keygen -i [-f 鍵ファイル]
# 公開鍵ファイルの指紋(fingerprint)を表示
$ ssh-keygen -l [-f 鍵ファイル]
# RAS鍵を作る場合
$ ssh-keygen -t rsa
```

- [＠IT：Linuxでsshの鍵を作成するには](http://www.atmarkit.co.jp/flinux/rensai/linuxtips/432makesshkey.html)
- [お前らのSSH Keysの作り方は間違っている - Qiita](http://qiita.com/suthio/items/2760e4cff0e185fe2db9)

# 鍵のフォーマットを変換したい
- [PEM形式とPutty形式の秘密鍵フォーマットを変換 - Qiita](https://qiita.com/ponsuke0531/items/9d073562ef51c8147d98)
- [Windows と Linux でファイル形式 .pem と .ppk の間の相互変換を行う](https://aws.amazon.com/jp/premiumsupport/knowledge-center/convert-pem-file-into-ppk/)

## フォーマットを見てみる
[RSA鍵のフォーマットを作って見て変換して体験実習しみた - Qiita](https://qiita.com/ponsuke0531/items/7b34347213660c80bc95)

# 秘密鍵のパスフレーズを解除したい
- Puttyの秘密鍵の場合
    1. PuTTYgenを起動
    2. [Load]ボタンで秘密鍵(.ppk)を選択してパスフレーズを入力
    3. パスフレーズ欄のパスフレーズを削除
    4. [Save private key]ボタンで秘密鍵を出力
- [秘密鍵からパスフレーズを取り除く - Qiita](https://qiita.com/kadoppe/items/0c289244a3a7286b3d75)

# 強度(鍵長)を確認したい

```bash
$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
2048 62:47:8f:cd:fa:16:f4:15:74:c6:9a:3c:59:49:fe:f4  root@localhost.localdomain (RSA)
```

# 困った！
- [WARNING: UNPROTECTED PRIVATE KEY FILE! - Qiita](https://qiita.com/ponsuke0531/items/031586eda0281d9ecf6f)
- [WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! - Qiita](https://qiita.com/ponsuke0531/items/9497895fe9217e5b40b3)
- [Unable to negotiate with : no matching host key type found. Their offer: ssh-rsa,ssh-dss - Qiita](https://qiita.com/ponsuke0531/items/6c522c56cce6b86e72ad)
- [no such identity: key-name.pem: No such file or directory - Qiita](https://qiita.com/ponsuke0531/items/fd308bfe64ae6e543080)
- [finish_connect - ERROR: async io completed with error: - Qiita](https://qiita.com/chovin/items/df149c5d2efa922e2895)
- [Missing target argument. - Qiita](https://qiita.com/chovin/items/54f2d388315721bcd28b)
- [/usr/bin/ssh: No such file or directory - Qiita](https://qiita.com/ponsuke0531/items/882ced1f1b7666a82f98)