免密碼方式(public key)登入具備SSH Server的Container

繼續上篇:具備ssh server的Dockerfile,這裡學習如何以免密碼方式登入具備SSH Server的Container。


我在很久以前就有用過免密碼登入(舊文:SSH免密碼登入),只是一直沒有真正的需要去,直到我開使用VSCode與Container。

1. 確認當前使用者的key


要先你的電腦有沒有已經在使用的key,避免被覆蓋掉。
ls -l $HOME/.ssh/id_*

通常是用rsa所以會有id_rsa和id_rsa.pub

沒有才用ssh-keygen產生本機使用者的public/private key
ssh-keygen -b 4096 -t rsa

2. 拷貝本機使用者的key進去container

podman exec -it sshd-instance /bin/bash -c "mkdir /root/.ssh/"
podman cp $HOME/.ssh/id_rsa.pub sshd-instance:/root/.ssh/authorized_keys
podman exec -it sshd-instance /bin/bash -c "chmod 660 /root/.ssh/authorized_keys"

  • 因為/root/.ssh目錄可能不存在,所以需要用mkdir -p去遞迴建立目錄。
  • 再把本機使用者的pubkey進入container,/root/.ssh/authorized_keys是為了讓ssh server確認是可以登入的public key。
  • 最後去改權限。

如果root可以直接進入或是用密碼進入的話可以用ssh-copy-id,但是因為我們前篇的docker image是不允許root登入。
ssh-copy-id -p 2222 root@127.0.0.1

3. 測試ssh連線

ssh root@127.0.0.1 -p 2222

留言