我尝试编写一个shell脚本,该脚本可以使用脚本中提到的密码自动登录ssh服务器。我写了以下代码:
set timeout 30
/usr/bin/ssh -p 8484 root@172.31.72.103
expect
{
"root@172.31.72.103's password"
{
send "password\r"
}
}
此代码无法正常运行,但仍在要求输入密码。有人可以帮我解决这个问题吗
我尝试编写一个shell脚本,该脚本可以使用脚本中提到的密码自动登录ssh服务器。我写了以下代码:
set timeout 30
/usr/bin/ssh -p 8484 root@172.31.72.103
expect
{
"root@172.31.72.103's password"
{
send "password\r"
}
}
此代码无法正常运行,但仍在要求输入密码。有人可以帮我解决这个问题吗
Answers:
我曾经写过一个expect
脚本来登录ssh服务器(如您的情况),而我的脚本是这样的:
#!/usr/bin/expect
spawn ssh MyUserName@192.168.20.20
expect "password"
send "MyPassword\r"
interact
我认为interact
您的脚本中可能缺少。
cd
and,ls
以及读取文件的内容。互动之后可以做吗?请回复
ls
在登录后发送命令。例如,在发送密码后,expect
对命令提示符文本进行确认(以确保您已登录),然后按send "ls\r"
。所有这些都过去了interact
。
file_list
退出后才能从本地命令提示符下访问
您正在以错误的方式进行操作。您要做的是生成一个无密码的ssh-key对,然后(只要服务器支持RSA密钥身份验证)就可以进入,而不必为所有密码输入密码。如果您的私钥存储在可能被盗的地方,则存在安全风险。
跟着这些步骤:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
现在,~/.ssh
目录中将有两个文件,mysshkey.pub
和mysshkey
。mysshkey.pub
是您的公开密钥,可以安全地放在远程服务器上。mysshkey
是您的无密码私钥,放在远程服务器上(或其他人可以得到副本的地方)并不安全。
在服务器上,您希望SSH进入:
mkdir -p ~/.ssh
mysshkey.pub
到~/.ssh/authorized_keys
~/.ssh/authorized_keys
就是chmod
“d到600
现在,要使其在本地计算机上生效,请运行以下命令:
ssh -i ~/.ssh/mysshkey <remote_server_ip>
并且您将登录,而不会提示您输入密码。
这是管理自动登录的一种更可取的方法,因为您不必最终对多个位置进行硬编码(如果您更改了它,则需要更新)。
您可以使用此:
sshpass -p 'yourpassword' ssh user@ip
创建散列密钥并将其保存在PC上所需的全部功能
只需输入
ssh-keygen -t rsa -b 4096 # just press Enter till the end
然后输入
ssh-copy-id <user>@<server>
然后使用正常登录
ssh <user>@<server>
现在您不需要密码了
注意:以纯文本格式保存密码很危险
此方法使用具有安全长度的公共密钥RSA的RSA创建密码的哈希值。
ssh-copy-id
命令,其他人都没有提到。我为此赞成。
只需5个简单步骤,即可使用SSH Keygen进行SSH无密码登录:
步骤1: 启用SSH-Kegen密钥–(192.168.0.12)
首先使用用户登录服务器192.168.0.12,并使用以下命令生成一对公共密钥。
步骤2: 在– 192.168.0.11
上创建.ssh目录。使用以下命令,使用服务器192.168.0.12上的SSH连接服务器192.168.0.11在其下创建.ssh目录。
步骤3:将 生成的公共密钥上传到– 192.168.0.11
从服务器192.168.0.12使用SSH,并在用户.ssh
目录下的服务器192.168.0.11上将新生成的公共密钥(id_rsa.pub)作为文件名authorized_keys 上传。
步骤4: 在192.168.0.11上设置权限
由于服务器上的SSH版本不同,我们需要在.ssh
目录和authorized_keys
文件上设置权限。
步骤5: 从192.168.0.12登录到192.168.0.11没有密码的服务器
从现在开始,我们可以以sheena用户身份从192.168.0.12服务器以tecmint用户身份登录到192.168.0.11,而没有密码。
chmod 700 id_rsa
在本地服务器(客户端,即您的示例中为192.168.0.12)的目录.ssh中进行了操作:问题已解决
我最近做了这个,这可能对您有帮助:
sshpass -p 'password' username@ipaddress
如果这不起作用,则必须在要连接的另一台计算机上生成密钥
ssh-keygen
它会生成私钥和公钥,并询问您要放置的位置,将其保留为空,默认情况下会将密钥保存在.ssh文件夹中,并询问您的密码短语,也可以将其保留为空,然后转到.ssh文件夹并更改公钥名称为“ authorized_keys”
cd .ssh/
mv id_rsa.pub authorized_keys
useradd -d /home/username username
这会将用户添加到列表中,然后转到主目录并授予权限并重新启动sshd服务
chmod 700 /home/username/.ssh
chmod 644 /home/username/.ssh/authorized_keys
chown root:root /home/dozee
sudo service sshd restart
现在,您将必须将私钥从您要运行ssh命令的位置移至该系统,然后才能与
sshpass -p 'password' ssh -i id_rsa username@ip
如果即使不起作用,也可以使用vim编辑器在/ etc / ssh中打开sshd_config,检查pubkeyAuthenticatoin是否设置为yes,如果不将其更改为yes,请重新启动sshd服务,然后尝试使用它,肯定可以。