ssh免密码登陆

本文详细介绍了如何实现SSH免密码登陆远程主机,包括生成RSA密钥对、拷贝公钥、追加到授权文件、配置SSH客户端,以及解决常见问题。通过配置~/.ssh/config,可以指定不同服务器的私钥文件、别名和登陆用户,实现session copy功能,甚至在不登陆的情况下执行远程命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文记录ssh免密码登陆的命令,主要作为备忘

远程主机ip:RemoteHostIpAddress

1.生成key

如果本地有id_rsa和id_rsa.pub这两个文件就不要再生成一次了,否则之前已经设置好的网站就白弄了。

ssh-keygen [-q] [-b bits-t type [-N new_passphrase] [-C comment] [-f output_keyfile]

ssh-keygen -t rsa

2.把公钥id_rsa.pub拷到远程主机上面去

scp /.ssh/id_rsa.pub user@RemoteHostIpAddress:~/.ssh/ir.pub (这里没用id_rsa.pub是因为防止把远程主机上的公钥覆盖)

3.把公钥id_rsa.pub追加到授权文件中

cat ~/.ssh/ir.pub >> ~/.ssh/authorized_keys

如果authorized_keys不存在,则创建之 touch ~/.ssh/authorized_keys(# 注意: 必须将~/.ssh/authorized_keys的权限改为600, 该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名

mac中的文件是/etc/sshd_config

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2

# but this is overridden so installations will only check .ssh/authorized_keys

AuthorizedKeysFile .ssh/authorized_keys

4.回到本地主机,免密码登陆远程主机

ssh root@RemoteHostIpAddress(默认使用的是~/.ssh/id_rsa)

假如在生成密钥公钥对文件时用-f指定了其他的文件名,需要使用-i来指定私钥文件

ssh root@RemoteHostIpAddress -i /path/to/your_id_rsa

或者在全局配置文件/etc/ssh_config(本地配置文件~/.ssh/config,没有则创建之)中添加如下配置:

Host RemoteHostIpAddress
        IdentityFile /path/to/your_id_rsa

 

 

奇淫技巧:

1.为每个服务器指定私钥公钥对文件

通过在~/.ssh/config中配置可以实现为每个服务器指定不同的配置文件

Host RemoteHostIpAddress
        IdentityFile /path/to/your_id_rsa
2.每次登陆时仍然要ssh root@RemoteHostIpAddress,ipAddress不好记,怎么办?
/etc/hosts中添加自己容易记的主机名

例如:

192.168.11.222 hackathon

这样登录时就可以使用ssh root@hackathon了。

不过要~/.ssh/config也要改一下:

Host hackathon
        IdentityFile /path/to/your_id_rsa
3.指定登陆用户

Host hackathon
       IdentityFile /Users/user1/.ssh/hackathon_rsa
       user root

这样每次登陆时,就可以直接ssh hackathon了,并且是以root用户登陆的。

4.session copy,多次登陆只输入一次密码

在~/.ssh/config中添加如下3行,只要在已经有一个terminal登录到aaa.bbb.com中后就可以session copy然后免密码登陆了。

Host aaa.bbb.com

ControlMaster auto

ControlPath ~/.ssh/master-%r@%h:%p

5.登陆就是执行很少的命令,不登陆能不能执行命令?

登陆一次忙活半天,登陆上去了就执行很少的命令,能不能不登陆了?

可以

ssh hackathon "your command"

例如:

user1@user1deMacBook-Pro:~/.ssh$ ssh hackathon "ls /"
bin
boot
data
dev
etc
home

...

6.安装sshpass
# sudo apt-get install sshpass
安装完成后使用sshpass允许你用 -p 参数指定明文密码,然后直接登录远程服务器。例如:
# sshpass -p '你的密码' ssh 用户名@服务器ip地址
用 '-p' 指定了密码后,还需要在后面跟上标准的 ssh 连接命令。
7.other错误处理

如果连接时出现如下的错误:
Agent admitted failure to sign using the key
则使用 ssh-add 指令将私钥加进来 (根据命名不同更改 id_rsa)
ssh-add ~/.ssh/id_rsa







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值