我想通过 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 是一个自动化该过程的工具。