linux ssh 不用密码自动登录的几种方法

1. 自动ssh/scp方法==

A为本地主机(即用于控制其他主机的机器) ;
B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;
A和B的系统都是Linux

在A上运行命令:
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh root@192.168.60.110 "mkdir .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/id_rsa.pub (需要输入密码)

在B上的命令:
# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)

回到A机器:

# ssh root@192.168.60.110 (不需要密码, 登录成功)

如出现Agent admitted failure to sign using the key错误

则在A机器上:

# ssh-add   ~/.ssh/id_rsa 



2. 控制n个机器如上所述自动登录
那就需要n对钥匙(密钥和公钥), ssh-keygen 命令可以随意更改钥匙对的名字, 比如:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.60.110

这样私钥和公钥的名字分别就是: id_rsa_192.168.60.110和 id_rsa_192.168.60.110.pub;然后将 id_rsa_192.168.60.110.pub 文件的内容, 追加到sever的 ~/.ssh/authorized_keys文件中,最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:
# ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110

scp也是一样的
# scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone

在文件.bashrc中加下两行,每次做同样的操作就不用敲入这样长的命令了:
alias sshcell='ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110'
alias scpcell='scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone'

这样,直接键入一下指令实现ssh和scp自动登录:
# sshcell
# scpcell


3. 自动ssh/scp脚本
如果需要从A,到B,然后才能够到C,那么需要ssh和scp两次,是比较麻烦的。
ssh自动登录:
#!/usr/bin/expect -f
set timeout 30
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh weiqiong@C\r"
expect "password:"
send "pppppp\r"
interact


scp从A拷贝文件到C:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn scp $file weiqiong@B:/home/weiqiong
expect "password:"
send "pppppp\r"
expect "]*"
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp $file weiqiong@C:/home/weiqiong\r"
expect "password:"
send "pppppp\r"
expect "]*"
exit
interact

scp从C拷贝文件到A:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp weiqiong@C:/home/weiqiong/$file .\r"
expect "password:"
send "pppppp\r"
expect "]*"
send "exit\r"
expect "]*"
spawn scp weiqiong@B:/home/weiqiong/$file .
expect "password:"
send "pppppp\r"
interact

4. 建立ssh/scp通道
比如说我的机器是A,中间服务器为B,目标服务器是C
从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C
现在展示利用ssh通道技术从A直接传输文件到C
1. ssh -L1234:C:22 userid@B
input B's password
(1234是本机A的空闲端口,该指令需要A机器上的root用户权限,实际上是在本机1234端口建立了一个通道)

2. 打开一个新的console,键入:
scp -P1234 filename userid@localhost:
input C's password

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux自动输入密码可以通过以下几种方式实现: 1. 使用expect工具:expect是一个自动化工具,可以模拟用户的交互操作,包括输入密码。可以编写一个expect脚本,在其中指定需要输入密码的命令和密码,然后运行脚本即可。 2. 使用ssh密钥认证:可以在本地生成一对公私钥,将公钥上传到需要登录的远程服务器上,然后在本地使用ssh命令连接远程服务器时,就可以自动完成认证,无需输入密码。 3. 使用sudo免密码:可以在sudoers文件中配置免密码,即指定某个用户或组在执行sudo命令时无需输入密码。具体配置方法可以参考sudoers文件的注释说明。 4. 使用gnome-keyring:gnome-keyring是一个密码管理工具,可以将密码保存在一个安全的地方,然后在需要输入密码的时候自动填充。可以在gnome桌面环境下使用该工具。 ### 回答2: 在Linux系统中,自动输入密码的需求可能会出现在一些自动化脚本或自动化工具中,这时候需要采用一些技巧来实现自动输入密码。 最常见的方法是使用SSH密码登录来避免需要输入密码SSH密码登录需要在两台机器之间进行设置:将公钥添加到另一台机器的已授权密钥列表中,以便允许该用户在不使用密码的情况下进行远程登录。 除了SSH密码登录方法,还有一些其他方法可以实现自动输入密码: 1.设置sudoers文件:将需要自动输入密码的命令添加到sudoers文件中,同时指定免密码验证。这就意味着通过sudo命令执行时,不需要输入密码。 2.使用expect工具:expect是一个自动化交互式应用程序的工具集,它可以用于自动化地执行命令,并且可以在执行过程中与程序进行交互,实现自动输入密码的效果。 3.使用加密的配置文件:将需要用到密码的配置文件加密,然后在需要使用时,输入口令解密,以便访问配置文件中的信息。 无论采用什么方式,自动输入密码都需要注意安全性问题,应该采取适当的措施确保密码不会被泄露。例如,将密码存储在明文文本文件中是非常危险且不安全的。 ### 回答3: Linux系统是一个非常强大的操作系统,但是在使用过程中可能需要频繁输入密码,这对于用户来说可能会带来一些不便。为了解决这个问题,Linux系统提供了一些方法来实现自动输入密码的功能。 一、使用SSH公钥 SSH公钥是一种安全的验证方式,它可以允许用户在不输入密码的情况下访问SSH服务器SSH公钥是使用RSA或DSA算法生成的一对密钥,一把是公钥,一把是私钥。在使用SSH公钥进行验证时,用户将其公钥添加到服务器的authorized_keys文件中,当用户访问服务器时,服务器自动识别该公钥并允许用户访问,无需输入密码。 二、使用sshpass工具 sshpass是一个命令行工具,可以在不需要交互式输入密码的情况下,从命令行输入密码。它可以将密码通过命令行参数的形式传递给ssh命令,从而实现自动登录。 使用sshpass的语法为: sshpass -p <password> ssh <username>@<host> 其中,<password>表示你的密码,<username>表示你的用户名,<host>表示你要登录的主机名或IP地址。 三、使用expect脚本 expect是一种自动化工具,可以用来编写脚本,实现自动交互和处理。在使用expect脚本自动输入密码时,我们可以编写一个脚本来实现自动登录功能。脚本包括交互式输入用户名和密码,并通过expect命令进行自动化处理。 使用expect脚本的语法为: #!/usr/bin/expect spawn ssh <username>@<host> expect "password:" send "<password>\r" interact 其中,<username>表示你的用户名,<host>表示你要登录的主机名或IP地址,<password>表示你的密码。 总之,在Linux系统中实现自动输入密码方法有很多,不同的方法适合不同的场景,用户可以根据自己的需要选择最合适的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值