SSH链接虚拟机中ubuntu

1、网络

既然要远程ubuntu的系统、那么首先是两个网络是不是在一个网段、能不能ping的通?

a)  Windows电脑上——cmd 打开命令窗口、键入:ipconfig 命令、查看主机IP。

b)  ubuntu系统、ctrl + alt + F1打开命令终端、键入ifconfig 命令、查看ubuntu上网IP。

c)  然后在ubuntu系统终端键入:ping +Windows上网的IP、查看是否ping的通、不可以则检查网络情况、以及是否在一个网段、ping的通在进行下一步

d)  在Windows命令窗口中键入:ping +ubuntu 上网IP、查看是否ping的通、不可以则检查网络情况、以及是否在一个网段、ping的通在进行下一步

2、ssh服务

既然是通过sshserver来进行远程、那么当网路通畅之后要解决的就是关于ubuntu系统的ssh问题。

a)  查看是否安装ssh服务

在ubuntu终端命令界面键入:

ssh localhost

如果出现下面提示则表示还没有安装:

ssh: connect to hostlocalhost port 22: Connection refused 

 b)  安装ssh服务

如果通过上面步骤查看没有安装sshserver、则键入如下命令安装:

sudo apt-getinstall –y openssh-server 

c)安装完成后启动ssh

service ssh start 

d)  启动完成之后可以使用命令:ps –e | grep ssh 来查看ssh状态、

6455 ?        00:00:00 sshd 

则表明启动成功。

再使用xshell连接ubuntu、问题解决。


### VSCode通过SSH连接Ubuntu虚拟机的配置教程 #### 1. 确保环境准备完成 在开始之前,需确认以下几点: - Ubuntu虚拟机已启动并正常运行。 - SSH服务已在Ubuntu上安装并启用。可以通过命令 `sudo systemctl status ssh` 来验证SSH服务的状态[^2]。 - 使用命令 `ifconfig` 或者更现代的 `ip addr show` 查看Ubuntu虚拟机的IP地址,通常是一个类似于 `192.168.x.x` 的局域网地址[^3]。 #### 2. 安装必要的扩展 打开VSCode,在扩展市场中搜索并安装 **Remote - SSH** 扩展。此扩展允许用户通过SSH协议连接至远程服务器或虚拟机[^4]。 #### 3. 配置SSH密钥(如果未设置) 为了安全性和便利性,建议使用SSH密钥而非密码认证。以下是创建和分发公钥的方法: ```bash # 在本地机器生成SSH密钥对(如果尚未存在) ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 将生成的公钥复制到Ubuntu虚拟机 ssh-copy-id user@<Ubuntu_IP_Address> ``` 上述操作完成后,尝试无密码登录以测试连通性: ```bash ssh user@<Ubuntu_IP_Address> ``` #### 4. 创建SSH配置文件 编辑本地用户的 `.ssh/config` 文件,添加如下内容以便简化连接过程: ```plaintext Host myubuntuvm HostName <Ubuntu_IP_Address> User your_username_on_ubuntu IdentityFile ~/.ssh/id_rsa ``` 这一步可以省去每次输入用户名、主机名以及指定私钥路径的操作[^1]。 #### 5. 在VSCode中建立连接 回到VSCode界面,按下快捷键 `Ctrl+Shift+P` (Windows/Linux) 或 `Cmd+Shift+P` (Mac),调出命令面板,输入并选择 `Remote-SSH: Connect to Host...` 命令。随后应能看到刚刚定义的别名 `myubuntuvm` 出现于列表之中;选中它之后按照提示逐步完成连接流程。 一旦成功接入目标虚拟机,则可以在左侧活动栏找到新的窗口选项卡代表该远程会话,并在此基础上开展开发工作或者调试任务。 #### 6. 解决常见问题 假如遇到无法连接的情况,请逐一排查下列事项: - 检查防火墙规则是否阻止了来自本机的访问请求; - 确认网络适配器模式(NAT/Bridged Adapter),确保两设备处于同一子网内能够互相通信; - 如果仍然失败,查看日志信息定位具体错误原因,调整相应参数重试。 ```python import paramiko def test_ssh_connection(host, port=22, username='root', password=None, key_filename=None): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: if key_filename is not None: client.connect(hostname=host, port=port, username=username, key_filename=key_filename) elif password is not None: client.connect(hostname=host, port=port, username=username, password=password) stdin, stdout, stderr = client.exec_command('whoami') output = stdout.read().decode() return f'Connected as {output.strip()}' except Exception as e: return str(e) finally: client.close() print(test_ssh_connection('<Ubuntu_IP_Address>', username='your_username', key_filename='~/.ssh/id_rsa')) ``` 以上脚本可用于初步检测Python环境下能否顺利达成SSH握手动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值