windows免密码登陆linux服务器

1、本地生成公钥和私钥

这边是使用git 中 shell产生的,其他类Unix系统可以直接在终端生成。

ssh-keygen -t rsa -C "kg-git"
#该命令产生的密钥是通过rsa算法加密生成的
生成密钥过程中可以一路回车,不给定密钥文件名字和密码,使用默认的密钥文件名称和空密码
默认生成的这个是公钥id_rsa.pub 和 私钥 id_rsa

也可以使用 ssh-keygen -f othername 来生成指定的文件名,或者生成之后改名
但是ssh命令默认只会读取 id_rsa这个私钥,所以如果 是其它 的名字需要添加配置文件 ~/.ssh/config
注意:若未使用默认的id_rsa,则需要额外配置~/.ssh/config,加入(注意host后面可以用ip或者其他域名):

Host crm.abc.com
        IdentityFile ~/.ssh/id_rsa.abc

生成过程截图

2、然后分发公钥到目标机器

ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@对方机器IP (注意不要忘记了参数-i)

注:ssh-copy-id -i 是最简单的办法,如果无法使用。可以分以下二个步骤:

a) 先scp或者其他工具 将本机的id_rsa.pub复制到对方机器的.ssh目录下

b) 在对方机器上执行如下命令,导入公钥。

将上传的公钥文件的内容追加到authorized_keys文件,使用如下命令:

mkdir -p ~/.ssh 
cat id_rsa.pub >> ~/.ssh/authorized_keys 

3、服务器修改ssh配置

修改ssh配置文件"/etc/ssh/sshd_config"的下列内容,将以下内容的注释去掉:(使用/RAS查找)

RSAAuthentication yes # 启用 RSA 认证,如果没有也可以不用修改该项
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

 4、修改authorized_keys和.ssh的文件权限

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

5、重启SSH服务

service sshd restart

6、使用本机的私钥既可以免密码登陆

后续可以进行进一步的设置

1.如果使用git,注意将登录shell改为git-shell,禁止 git 用户 ssh 登录服务器

编辑 /etc/passwd

找到:

git:x:1001:1001::/home/git:/bin/bash

修改为:

git:x:1001:1001::/home/git:/bin/git-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

ssh 免密码登录失败 · Issue #93 · codcodog/Blog · GitHub

2. 问题解决:

上面的操作完成后,就可以用 ssh 对方机器IP 来测试了,顺利的话,应该不会提示输入密码。

如果失败,有可能是以下原因:

1、权限问题

.ssh目录,以及/home/当前用户 需要700权限,参考以下操作调整

sudo chmod 700 ~/.ssh

sudo chmod 700 /home/当前用户

.ssh目录下的authorized_keys文件需要600或644权限,参考以下操作调整

sudo chmod 600 ~/.ssh/authorized_keys

2、StrictModes问题

编辑

sudo vi /etc/ssh/sshd_config

找到

#StrictModes yes

改成

StrictModes no

如果还不行,可以用ssh -v 目标机器ip 查看详情,根据输出内容具体问题具体分析了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值