盆暗の学習記録

データサイエンスを中心として,日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

ssh接続についてのメモ

※環境

Windows 10 1093
WSL Ubuntu 18.04

例えばEC2インスタンス作成時に受け取ったpemファイルや,ssh-keygenコマンドで生成した鍵を使う。

keygen1:雑な方法

コマンドを叩くだけ。

ssh-keygen

そうするとEnter file in which to save the key (/home/hogehoge/.ssh/id_rsa):と聞かれるが,SSH Keysの保存先を聞かれているだけなので,Enterを入力

続いてEnter passphrase (empty for no passphrase):と言われるが,なくても作れる(そして秘密鍵が盗まれないかぎり安全)のでEnterを入力する。

最低限のセキュリティをもった2048bit RSAの鍵はこれで作れる。

keygen2:丁寧に作る方法

ちょっとオプションを足してコマンドを叩き

# 4096bit RSA鍵
ssh-keygen -t rsa -b 4096
# 521bit ECDSA鍵(15360bit RSA鍵に相当するらしい)
ssh-keygen -t ecdsa -b 521

ちゃんとパスフレーズを設定する(秘密鍵が盗まれてもパスフレーズがわからないと使えないのでより安全)

というのがセキュリティ的には望ましいらしい。

参考

.ssh/configの書き方

.sshディレクト

ディレクトリがなければ作成し,

mkdir ~/.ssh
chmod 700 .ssh

sshディレクトリのパーミッションは700(管理者にのみ全権付与)にする。

参考:chmod コマンド - Qiita

configファイル

ファイルがなければ作成する

touch ~/.ssh/config
chmod 600 ~/.ssh/config

権限を管理者に限定しないと,以下のようなエラーが出る

Bad owner or permissions on /home/fuga/.ssh/config

configには次のような記法で書き込む。

Host hoge_server
    HostName hogehoge.com
    User fugafuga
    IdentityFile ~/.ssh/hoge.pem
    Port 22

参考:.ssh/configファイルでSSH接続を管理する - Qiita

接続

configに記載したHostの名前で指定する

ssh hoge_server

パーミッション関連のエラー

このとき,鍵ファイルのパーミッションが適切に設定されていない場合,次のようなエラーが出る

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                             
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @                             
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                             
Permissions 0666 for '/home/fugafuga/.ssh/hogehoge.pem' are too open.

Are you sure ? を省略する

また,初回接続時に

Are you sure you want to continue connecting (yes/no)?

と聞かれるが,VS Codeのremote developmentなどではこれが出ると邪魔くさいので

.ssh/configStrictHostKeyChecking noを追記すればこれを省略できる。

Host hogehoge
    ...
    StrictHostKeyChecking no