通过 SSH 连接到计算机时从文件中获取密码

通过 SSH 连接到计算机时从文件中获取密码

我想通过 SSH 连接到远程计算机,但我不想输入密码,而是想从另一个文件重定向它。

password.txt所以我有一个存储密码的文件。File.sh是我的 bash 文件。

File.sh

#!/bin/bash
ssh -T [email protected]

在执行该文件时,我做了:

./File.sh < password.txt

但无论如何我都被要求输入密码。

如何从文件中获取要输入的密码?

答案1

带有“文件中的密码”的 SSH 通常用作公钥身份验证。使用 创建密钥对ssh-keygen,将公钥上传到另一台主机:

scp ./.ssh/id_rsa.pub [email protected]:~/

并将其放置为~/.ssh/authorized_keys

ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys

或者,如果authorized_keys文件已存在:

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

设置适当的权限(文件为600,目录为700):

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

并启动一个新的 ssh 会话。

答案2

您可以使用sshpass以下方法来做到这一点:

sshpass -f password.txt ssh -T [email protected]

答案3

#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact

Expect 是一个自动化该过程的工具。

相关内容