そもそも、SSHの接続は公開鍵方式の方がいいのか?パスワード方式でいいのか?
これについてはQiitaにLGTMが多くつけられたわかりやすい記事がありました。
僕もLGTMしました。
結論から言えば、公開鍵認証の方が良いと言って差し支えないと思います。
つまり公開鍵認証最大のメリットは、パスワード認証に使うパスワードと違って同一の鍵を各所に使い回すことにリスクがほぼないことです。
使いまわしたところで、サーバから公開鍵が漏洩しても、無問題と。
- サーバから公開鍵が漏洩・・・・・秘密鍵が漏洩してないので他のサーバに影響なし
- サーバからパスワードが漏洩・・・パスワードがあれば他のサーバにログインできてしまう
また、パスワードの場合、使いまわしでなくとも、
- 単純なパスワード
- 推測しやすい
- 英数記号大文字小文字がなく、例えば数字だけとか
みたいなものにしてもアカンよ、と。
公開鍵方式にできない場合は、複雑なものにすべきですね。
量子コンピュータが一般化されたら速攻で暴かれると思いますが、2022年現在ではまだ気にしなくて良さそうです。
SSHのキーペア(秘密鍵と公開鍵)を作成する
DreamWeaverでもSFTPできるSSHキーペア作成(OpenSSLのPEM形式)
オプション無しで作成すると、DreamWeaverでSFTP接続できなかった。
スクショ取り忘れたが、DreamWeaverからエラーのポップアップが表示され、その内容は、
- FTPへの接続失敗
- IDかPASSWORDが間違っている
というものだった。
こちらに書かれていることで対処できた(助かりました)
実際には「OpenSSLのPEM形式」でのキーファイルがサポート対象なようです。
以下のコマンドで作成する。
ssh-keygen -t rsa -m PEM
UbuntuからのSSH接続も上記で作成したキーペアで接続できることを確認した。
オプション無しSSHキーペア作成(OpenSSH形式)
ssh-keygenコマンドを使う場合。
オプションなしで
$ ssh-keygen
コマンドを実行した場合、
最初に
Enter file in which to save the key (/home/username/.ssh/id_rsa):
みたく出てくるが、このまま空Enterすると、
/home/username/.ssh/id_rsa
というファイルが秘密鍵になる。
別のファイル名をここで指定したい場合は、フルパスで指定する。
そうすると、公開鍵もそれに合わせた名前で作成される。
別に秘密鍵のファイル名は、ファイルが出来上がった後でファイル名を後でリネームしても良かった。はず。多分。気がする。
キーペアの設置
サーバに公開鍵を設置
サーバで作った場合
$ cat 公開鍵 >> ~./ssh/authorized_keys
する。↓
authorized_keysのパーミッションを600に変える。
600に変えないとSSHログインができない事象が発生する。
$ chmod 600 ~/.ssh/authorized_keys
ローカル端末で作った場合
サーバに設置する。
ssh-copy-id コマンドを使う。
ssh-copy-id hoge@exmple.com -i 公開鍵
-i オプション・・・公開鍵を指定する
参考:@it
ちなみに、
ssh-copy-idはSSHでのパスワードログインができる状況でないとできないらしー。
SSHでのパスワードログインを許可していない場合は、
- 一時的にパスワードログインを有効にするか、
- ssh-copy-idでやるのは諦めて、先述のやり方(authorized_keysに追記する)
でやる。
個人的には安全を取るなら(既にauthorized_keysが在る場合、上書きしないという意味で) cat ~ >> を使うより、
vim authorized_keys
などエディタで開いてから末尾に追記するのが良いと思う。何回もやる作業じゃないし。
ローカル端末に秘密鍵を設置
ローカル端末の
~/.ssh/.
あたりに作成した秘密鍵を設置する。
パーミッションは600で。
サーバで作成していた場合は、
scpコマンド(非推奨コマンドだけど)などで取得する。
コメント