配置:
VMware Ubuntu :
IP: 192.168.10.10/24 (保证与主机在同一网段即可)
模式: 仅主机 / NAT (下面逐一介绍)
模式介绍:
仅主机:
虚拟机与外界隔开,只与主机通信
NAT:
可以连通互联网
Windows10:
-
如果虚拟机是仅主机模式,那么配置
VMnet1
,我配置的是192.168.10.2
此时ping192.168.10.10
(虚拟机ip):
再用虚拟机ping192.168.10.2
:
-
如果虚拟机是NAT模式,那么配置
VMnet8
, 我配置的是192.168.10.1
此时ping192.168.10.10
:也能ping通。
再用虚拟机ping192.168.10.1
,能ping通
如果配置没错,但是虚拟机内ping不通,可以尝试切换windows的wifi网络信号(如切换到热点、或热点切换到wifi)
不管上述采用哪种模式,下面使用XShell与虚拟机建立ssh连接的操作都一样。
- 当然前提是虚拟机内装了
ssh
.- 虚拟机内输入
ssh localhost
: 提示Connection refused
说明未安装
输入以下命令安装ssh:apt-get update
apt-get install openssh-server
- 安装完毕后:
/etc/init.d/ssh start
启动 ps -e | grep ssh
检测是否有sshd
,有则安装成功。
- 虚拟机内输入
若双向都能ping通则可以用XShell建立连接:
在Xshell输入:ssh 192.168.10.10
输入用户名,mima,连接成功
这种是通过口令
连接,也可以选择通过密钥
进行连接,安全性更高。
Ubuntu本地生成ssh密钥
:
-
ssh-keygen
会让你选择路径,直接回车,默认/root/.ssh/id_rsa
(root身份)或者/home/dave/.ssh/id_rsa
(非root身份,我的是这个)
设置密码,也可以直接回车,不设(我没设置)。 -
将生成密钥传至远程主机
ssh-copy-id 192.168.10.1
-
对Ubuntu进行设置,使其只允许密钥验证,拒绝口令验证方式。
vim /etc/ssh/sshd_config
PasswordAuthentication
后改为prohibit-password
(78行)
-
重启sshd
systemctl restart sshd
-
XShell中远程登录
ssh 192.168.10.10
输入用户名后,不能输入密码,只能用密钥
登陆。
XShell与虚拟机建立密钥 免密登陆虚拟机
上面的方法(通过虚拟机生成密钥)不通过的话,可以通过XShell生成密钥,再利用Xftp
连接虚拟机将公钥传入虚拟机(服务器)。私钥导入XShell(客户端)
一路下一步直到…保存到桌面(得到.pub公钥
)
然后用户密钥管理者
->导出
(私钥
)
-
私钥
放到XShell
,公钥.pub
注册到虚拟机
(服务器
) -
首先将
公钥
文件通过Xftp导入虚拟机
(教程见通过Xftp实现虚拟机(服务器)与主机传输文件) -
导入虚拟机后
.pub
文件(公钥
)在我的home目录(随意保存),然后将其转移到/home/dave/.ssh
目录:
在该目录使用:mv id_rsa_2048.pub /home/dave/.ssh
(如是root用户,则 /root/.ssh) -
cat id_rsa_2048.pub >> authorized_keys
: 将公钥.pub
注册到authorized_keys
文件 -
(如果是用)root
登录,需要更改vim /etc/ssh/sshd_config
中的PermitRootLogin
更改为yes,不是的话不用管这步,更改后systemctl restart sshd
-
接下来用XShell选择public key登录,密码我设的空,导入私钥直接确定
连接成功。
我出现远程主机未注册密钥错误是因为.pub
文件应该注册(追加内容)到/home/dave/.ssh
内的authorized.key
,(我注册到/etc/ssh
了,我丢,检查半天),目录结构如下: