![常見問題:ssh:連線到主機 10.0.2.15 連接埠 22:連線被拒絕](https://rvso.com/image/1157738/%E5%B8%B8%E8%A6%8B%E5%95%8F%E9%A1%8C%EF%BC%9Assh%EF%BC%9A%E9%80%A3%E7%B7%9A%E5%88%B0%E4%B8%BB%E6%A9%9F%2010.0.2.15%20%E9%80%A3%E6%8E%A5%E5%9F%A0%2022%EF%BC%9A%E9%80%A3%E7%B7%9A%E8%A2%AB%E6%8B%92%E7%B5%95.png)
我在 Windows 10(主機)上使用 VirtualBox 建立兩個虛擬機器(Guest DT
和Guest S
)。我可以透過 SSH 連接Guest DT
到 嗎Guest S
?
Guest DT
是Ubuntu桌面18.04。Guest S
正在運行 Ubuntu伺服器18.04。- VirtualBox 術語
我對 SSH 缺乏經驗。我用谷歌搜尋並閱讀了該網站上「類似問題」的答案。
錯誤
在 上Guest DT
,我這樣做:
$ ssh [email protected]
ssh: connect to host 10.0.2.15 port 22: Connection refused
筆記:
- 我可以成功 ping 通 10.0.2.15
test
是我在 上的用戶名Guest S
。
環境設定
在Guest DT
:
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
ssh-rsa <a very long key> neil@neil-VirtualBox
在Guest S
:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ echo "ssh-rsa <a very long key> neil@neil-VirtualBox" > ~/.ssh/authorized_keys
$ /etc/init.d/ssh restart
在Guest S
:
test@server01:~$ service sshd status
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-06-15 02:05:04 UTC; 1h 16min ago
Process: 903 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 906 (sshd)
Tasks: 1 (limit: 2317)
CGroup: /system.slice/ssh.service
└─906 /usr/sbin/sshd -D
Jun 15 02:05:04 server01 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 15 02:05:04 server01 sshd[906]: Server listening on 0.0.0.0 port 22.
Jun 15 02:05:04 server01 sshd[906]: Server listening on :: port 22.
Jun 15 02:05:04 server01 systemd[1]: Started OpenBSD Secure Shell server.
$ sudo ufw status
[sudo] password for test:
Status: inactive
/etc/ssh/sshd_config contains :
#PubkeyAuthentication yes
答案1
我認為 VirtualBox guest 虛擬機器的預設網路設定實際上NAT
並不是為了實現這種類型的網路通訊;但根據舊帖子可能可以透過轉發非系統連接埠到訪客連接埠並使用預設值環回IP位址聯繫客人。 10.0.2.2 是預設環回。
設定網路
然而,最簡單的方法是確保為每位客人選擇正確的網路。關閉您的來賓計算機,然後在 VirtualBox 中編輯適合您需求的網路模式(注意網格)。
使用預設 NAT 網絡
使用 NAT,VirtualBox 使用特殊的 IP 10.0.2.2 作為環回(至少我認為這仍然是正確的)。因此,從環回轉送的連接埠可供所有來賓使用。我認為你應該能夠利用這一點。要使用 NAT 網路進行通信,需要以下其中一項:
使用 VBoxManage 設定 NAT 轉發非系統連接埠 (1024–65535)到一個較低的系統連接埠(<1024)。
- 在本例中,將連接埠 2222 之類的內容轉送至連接埠 22(SSH 的預設值)。這也假設我們將根據問題 使用 的
Guest S
IP 位址。10.0.2.15
在 Virtualbox 主機上配置連接埠轉發,運行:
VBoxManage 修改vm“虛擬機器名稱”--natpf1“guestssh,tcp,,2222,,22”
到達任何主機介面上的連接埠 2222 的所有 TCP 流量都會轉送到來賓中的連接埠 22。協定名稱 tcp 是強制屬性,定義應使用哪個協定進行轉送(也可以使用 udp)。 guestsh 名稱純粹是描述性的,如果省略,將自動產生。 --natpf 後面的數字表示網卡,就像 VBoxManage 的其他部分一樣。
檢查已新增的規則:
VBoxManage showvminfo myserver | VBoxManage grep '規則'
Guest Server
透過主機環回映射和連接埠轉送連接到Guest S
尼爾@尼爾-VirtualBox$ ssh -p 2222[電子郵件受保護]
- 在本例中,將連接埠 2222 之類的內容轉送至連接埠 22(SSH 的預設值)。這也假設我們將根據問題 使用 的
替代方案:更改 (客人S)/etc/sshd_config收聽 非系統連接埠 (> 1024)。然後重新載入ssh。
答案2
只需刪除已知主機目錄中包含的所有 ECDSA 指紋金鑰(可能是 SHA256)即可。
- 跑步
vi ~/.ssh/known_hosts
- 刪除known_hosts 檔案中與主題IP 位址關聯的所有金鑰。
- 輸入“Esc”鍵,然後輸入“Shift”鍵 +“:”+“x”