unbuntu ssh免密登陆

机器1: 192.168.8.88
机器2: 192.168.8.99
0.使用host-only方式
将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段
注意:一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段,但是IP不能相同
1.Linux环境配置(windows下面的防火墙也要关闭)
1.1修改主机名
vim /etc/hostname
将里面的唯一 的一行改为主机名
lb
1.2修改IP
修改配置件/etc/network/interfaces
root@ubuntu:~#
sudo gedit/etc/network/interfaces

添加以下内容(最后面添加):
auto eth0 #设置自动启动eth0接
iface eth0 inet static #配置静态IP
address 192.168.8.88 #IP地址
netmask 255.255.255.0 #子网掩码
gateway 192.168.8.1 #默认网关
1.3修改主机名和IP的映射关系
vim /etc/hosts
192.168.8.110 lb
1.4关闭防火墙
查看防护墙状态
service iptables status

    关闭
      ufw disable

    2 查看防火墙状态
     sudo ufw status        
    关闭ubuntu中的防火墙的其余命令
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F

3.配置ssh免登陆
cd ~/.ssh
生成ssh免登陆密钥
ssh-keygen -t rsa
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
生成authorized_keys 文件(固定文件,名字不能改)
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys**重点内容**
将公钥拷贝到要免登陆的机器2上
ssh-copy-id 192.168.8.99

登陆到机器2:
ssh 192.168.8.88
不用输入密码即可登陆到机器2,则为免密登陆成功。
<think>嗯,用户想在虚拟机上设置SSH免密登录。我之前学过一些SSH的知识,但具体步骤可能记不太清了。首先,我需要回忆一下SSH的基本原理。SSH是Secure Shell的缩写,用于安全地远程登录到其他计算机。免密登录通常是通过公钥和私钥认证实现的,对吧?用户生成一对密钥,然后把公钥放在目标服务器上,这样登录时就不需要输入密码了。 接下来,具体步骤应该是怎样的呢?首先,用户需要检查虚拟机是否安装了SSH服务。根据引用中的内容,比如引用[2]提到要检查sshd的状态,可能需要用systemctl status sshd来确认服务是否运行。如果没安装的话,可能需要用yum或apt安装openssh-server。 然后生成SSH密钥对。用户应该使用ssh-keygen命令生成密钥,默认是RSA类型,保存在~/.ssh目录下,会有id_rsa(私钥)和id_rsa.pub(公钥)。记得在生成过程中可能需要设置空密码,直接回车,这样才不会在登录时被提示输入密码。 之后,要把公钥复制到目标虚拟机,也就是需要免密登录的那台机器。常用的方法是使用ssh-copy-id命令,后面跟用户名和目标IP地址。比如ssh-copy-id user@hostname。这个命令会自动把公钥添加到目标机器的~/.ssh/authorized_keys文件中。不过,如果用户没有这个命令的话,可能需要手动创建.ssh目录,设置权限,然后把公钥内容追加到authorized_keys里,并且调整权限,比如chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys,这点引用[3]和引用[4]都有提到。 权限设置是关键,很多问题都是因为权限不对导致的。比如.ssh目录权限应该是700,authorized_keys是600。用户可能会忽略这点,导致无法免密登录。 测试连接的时候,用ssh user@hostname,应该就能直接登录,不需要密码了。如果不行的话,可能需要检查日志,比如查看/var/log/secure或者auth.log,看看有没有错误信息。 另外,引用[1]提到要重启SSH服务,可能需要执行sudo service ssh restart或者systemctl restart sshd,使配置生效。不过有时候可能不需要,但如果有修改过SSH配置文件的话,就需要重启。 用户的问题是关于虚拟机的,可能需要考虑多台虚拟机之间的配置,比如主从机的情况,像引用[3]中的三台CentOS设置。这时候需要在每台机器上重复这些步骤,或者将公钥分发到所有需要登录的机器上。 可能用户会遇到的问题包括:权限错误、ssh-copy-id命令不可用、防火墙阻挡SSH端口(22号端口)、SELinux设置等。需要提醒用户检查这些方面。比如,防火墙可能需要开放22端口,或者临时关闭防火墙测试。 总结一下步骤应该是:安装SSH服务,生成密钥对,分发公钥,设置权限,测试连接,处理可能的问题。需要按照顺序一步步来,确保每个步骤都正确完成。</think>### 如何在虚拟机上设置SSH无密码登录? #### 步骤详解 1. **确保SSH服务已安装并运行** - 在虚拟机中执行以下命令检查SSH服务状态: ```bash systemctl status sshd ``` 若未安装,使用 `sudo apt install openssh-server`(Debian/Ubuntu)或 `sudo yum install openssh-server`(CentOS/RHEL)安装[^2]。 2. **生成SSH密钥对** - 在本地主机(发起登录的机器)执行: ```bash ssh-keygen -t rsa ``` 默认生成密钥到 `~/.ssh/id_rsa`(私钥)和 `~/.ssh/id_rsa.pub`(公钥),按提示设置空密码(直接回车)以实现完全免密[^4]。 3. **复制公钥到目标虚拟机** - 使用 `ssh-copy-id` 自动完成公钥分发: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub username@虚拟机IP ``` 若未安装 `ssh-copy-id`,可手动操作: ```bash cat ~/.ssh/id_rsa.pub | ssh username@虚拟机IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" ```[^3] 4. **权限检查与配置** - 确保目标虚拟机上的权限正确: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` 权限错误是导致免密登录失败的常见原因[^3]。 5. **重启SSH服务(可选)** - 若修改过SSH配置文件(如 `/etc/ssh/sshd_config`),需重启服务: ```bash sudo systemctl restart sshd ```[^1] 6. **测试免密登录** - 执行命令验证: ```bash ssh username@虚拟机IP ``` 成功登录则表明配置完成。 #### 常见问题排查 - **连接失败** 检查目标虚拟机的防火墙是否开放22端口: ```bash sudo ufw allow 22 # Ubuntu/Debian sudo firewall-cmd --permanent --add-port=22/tcp # CentOS/RHEL ``` - **权限错误** 确保本地 `.ssh` 目录权限为 `700`,私钥文件权限为 `600`。 - **SELinux干扰** 临时禁用SELinux测试: ```bash setenforce 0 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值