一、安装工具包
sudo apt update # 更新软件源
sudo apt upgrade # 更新已安装软件包
sudo apt install manpages-posix-dev # 安装posix帮助手册
sudo apt install net-tools iproute2 # 安装网络工具包
sudo apt install gcc gdb vim # 安装gcc gdb vim
sudo apt install git # 安装git
二、配置远程连接
2.1 配置静态ip地址
1、打开设置中的网络
2、打开齿轮,
- 打开"详细信息"页面,记录一下红色方框中的信息:
3、然后进入"IPV4"选项页,将下列信息填入:
- 记录的IPV4地址,输入地址栏
- 子网掩码固定填入:“255.255.255.0”
- 记录的默认路由,填入网关栏
- 记录的DNS,填入DNS栏
可以参考下图:
三、安装SSH
在虚拟机上安装ssh
sudo apt install ssh
安装好之后,查看是否启动了守护进程 (类似windows上的服务) sshd
ps -elf | grep sshd
# 如果出现下面一行,则表明虚拟机上已启动了守护进程 sshd。
4 S root 2673 1 0 80 0 - 3859 - 23:09 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
0 S haonan 2778 2328 0 80 0 - 3048 pipe_r 23:10 pts/0 00:00:00 grep --color=auto sshd
注:显示的信息可能不一样,只要出现 /usr/sbin/sshd -D 即可。
测试
在Windows上测试
SSH测试:在宿主机或其他机器上使用ssh 用户名@虚拟机IP地址。
参考链接:https://blog.csdn.net/weixin_48705841/article/details/143226301
测试错误
假如测试是出现了错误,证明之前有配置过ssh在windows上面。
使用 Windows 连接远程服务器出现 Bad owner or permissions 错误及解决方案
在 Windows 系统上连接远程服务器时,使用 SSH 可能会遇到以下错误:
Bad owner or permissions on C:\Users\username/.ssh/config
这个问题通常是由于 SSH 配置文件 .ssh/config 的文件权限设置不正确导致的。SSH 配置文件应具有受限权限,以防止未经授权的访问。因此,需要确保只有当前用户对该文件具有读取权限。本文将结合 icacls 命令修复此问题,并进一步介绍如何通过 SSH 进行端口转发,以及如何处理常见的 “过程试图写入的管道不存在” 错误。
icacls 是一个用于在 Windows 操作系统中管理文件和文件夹访问控制列表(ACL)的命令行工具。你可以使用这个命令来查看、修改和备份文件和文件夹的权限。
问题分析
Bad owner or permissions on C:\Users\username/.ssh/config:
该错误提示表明 .ssh/config 文件的权限设置不正确。SSH 客户端会严格检查此文件的权限设置,如果发现该文件对其他用户开放了写权限,则会拒绝使用该文件以防止潜在的安全威胁。
过程试图写入的管道不存在:
该错误通常发生在使用 SSH 隧道或端口转发时,表示 SSH 连接中的某个数据通道未能正确建立,可能是由于权限、网络问题或端口冲突导致的。
文件权限修复方案
- 移除文件的继承权限
首先,需要移除 C:\Users\username.ssh\config 文件的继承权限,以确保文件不再继承其父文件夹的权限。
执行以下命令:
# username是你自己路径用户名的名称
icacls C:\Users\username\.ssh\config /inheritance:r
/inheritance:r:移除该文件从父文件夹继承的权限,确保权限设置仅适用于当前文件。
2. 授予用户读取权限
接着,为当前用户授予 .ssh/config 文件的只读权限。
命令如下:
icacls C:\Users\username\.ssh\config /grant:r username:(R)
# 正确设置用户权限 当您的用户名包含特殊字符(如king_)时,请用双引号将用户名括起来:
icacls C:\Users\king_\.ssh\config /grant:r "king_":(R)
# 检查更改是否生效 运行以下命令验证权限是否设置正确
icacls C:\Users\king_\.ssh\config
# 重试SSH连接 修复权限后,再次尝试使用以下命令连接:
ssh haonan@192.168.229.128
username:®:这里的 username 是你的 Windows 用户名,® 表示授予只读权限。
3. 重启系统或重启 SSH 服务
完成以上权限修改后,建议重启系统或 SSH 客户端,以确保修改生效。
假如现在的密钥和之前的密钥发生了变化需要移除之前的密钥
远程主机的密钥发生了变化或与之前记录的密钥不一致,这可能导致SSH连接失败。以下是解决方法:
解决步骤:
方法一:移除已存储的旧主机密钥
运行以下命令,从known_hosts
文件中删除有关192.168.229.128
的记录:
ssh-keygen -R 192.168.229.128
此命令会自动找到并移除存储在C:\Users\king_\.ssh\known_hosts
文件中的旧主机密钥。
方法二:手动编辑known_hosts
文件
- 打开文件
C:\Users\king_\.ssh\known_hosts
:- 可以使用记事本或其他文本编辑器。
- 找到与
192.168.229.128
相关的那一行(通常是文件中的第1行)。 - 删除该行并保存文件。
方法三:重新接受新的主机密钥
删除旧密钥后,再次尝试连接:
ssh haonan@192.168.229.128
此时,SSH会提示您接受新的主机密钥,输入yes
以确认。
注意事项
- 安全性检查:
如果您不是主动更改过服务器的SSH主机密钥,而是意外发现密钥发生变化,请确保服务器未被第三方篡改或攻击。 - 启用严格密钥检查:
如果服务器配置允许,可以使用以下命令检查密钥指纹是否正确:
对比其输出指纹与您认为正确的指纹。ssh-keyscan -H 192.168.229.128
四、安装telnet
在Ubuntu系统中,您可以通过以下步骤安装SSH和Telnet服务:
安装Telnet客户端和服务
Telnet是一种不加密的远程通信协议,通常不推荐用于生产环境,但可以用作调试或学习目的。您可以通过以下指令安装:
安装Telnet客户端:
sudo apt install telnet -y
安装Telnet服务:
sudo apt install xinetd telnetd -y
安装完成后,需要编辑配置文件以启用Telnet服务:
-
打开
/etc/inetd.conf
文件:sudo nano /etc/inetd.conf
-
确保以下行未被注释(如果没有,手动添加):
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
-
重启服务:
sudo systemctl restart xinetd
测试
- Telnet测试:运行
telnet 虚拟机IP地址
以验证服务。