Linux實作筆記01:WSL啟用SSH終端機連線

接觸了各種資料,開發的平台/機器不是用Unix基底的Mac,就是Linux家族的CentOS或Ubuntu。國中時期為了玩遊戲在DOS系統下學了不少指令,命令列介面對我而言有種莫名的親切感,總覺得學會了有天會用得上,就當作充實自己的實力吧!

這個時代遠端桌面操作跟喝水一樣簡單,Linux應該也是吧?一邊這麼想著一邊研究著怎麼遠端連線到Linux,我才知道我太天真了…

據資料了解,Linux可透過終端機連線,為了開啟SSH(Secure Shell),一連串的問題就這樣開始了。

系統:Windows子系統WSL的Ubuntu-18.04

連線除錯方式:

參數加上-v可以看詳細資訊

1
ssh -v localhost

折騰半天,總結是兩個問題:

  1. ssh有沒有啟用
  2. 公鑰跟私鑰有沒有產生

1.ssh有沒有啟用

對,就是這麼簡單。

如果想確認ssh有沒有安裝,可以用下面指令確認:

1
2
which ssh (用戶端)
which sshd(伺服端)

因為用的是WSL的Ubuntu練習(linux好像不一樣),啟用指令為:

1
service ssh start

檢查狀態的指令為:

1
service ssh status

如果出現sshd is not running,就重新跑上面指令啟動。


1.1.啟動時的錯誤訊息

1
/etc/ssh/sshd_config line 56: Bad yes/no argument: Yes

表示sshd_config這個檔案的設定有錯,yes/no的參數全部要 小寫
當初修改設定時沒注意這點,很習慣的把Yes首字母大寫…


2.公鑰跟私鑰有沒有產生

啟動ssh的時候出現訊息:

1
2
3
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key

表示金鑰有問題,檢查一下

1
ll /etc/ssh

確認下面幾個檔案有沒有存在

1
2
3
4
5
6
ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub
ssh_host_ed25519_key
ssh_host_ed25519_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub

檔案不存在的話用下列指令產生

1
2
3
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

之後應該就可以正常連線了。


用錯誤訊息去google到的答案並不一定有效,以下僅列出client端連線時遇到的錯誤訊息做為參考

1
2
3
Connection closed by 127.0.0.1 port 22
ssh: connect to host localhost port 22: Connection refused
kex_exchange_identification: read: Connection reset by peer

"linux_inside" (CC BY-SA 2.0) by Adriano Gasparri