我正在尝试编写一个允许我使用ssh连接登录的bash脚本。 条件是密码存储在.txt文件中。
我需要编写一个自动请求连接到
的bash脚本setEnabled(false)
并自动使用存储在.txt文件中的密码
我从未在bash中写过一些东西。有人能帮我吗。 提前感谢您的时间。
答案 0 :(得分:2)
您无法使用普通bash
脚本执行此操作。您需要使用expect
命令。
说将密码存储在文本文件中真的是一个非常糟糕的主意,以下是使用expect
执行此操作的方法:
#!/usr/bin/expect
set timeout 20
set f [open "password.txt"]
set password [read $f]
close $f
spawn ssh user@host
expect "user@host's password:"
send $password
interact
我仍然建议按照@ Wolph的建议,在使用ssh
访问远程服务器时查看使用一对密钥。
答案 1 :(得分:1)
我建议你使用密码少的身份验证,按照以下步骤更安全:
example@example:~/bash$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/example/.ssh/id_rsa): ## the directory which located private key and public key.
Enter passphrase (empty for no passphrase): ## you can use passphrase password if you want .
Enter same passphrase again: ## enter same password again.
Your identification has been saved in /home/example/.ssh/id_rsa.
Your public key has been saved in /home/example/.ssh/id_rsa.pub.
The key fingerprint is:
70:03:68:70:0a:52:16:55:55:66:62:2b:51:67:81:92 example@example
The key's randomart image is:
+--[ RSA 2048]----+
|o.=+oo++=oB. |
|.o oo E+.B |
| .. o.+ |
| + . |
| S |
| |
| |
| |
| |
+-----------------+
然后输入
scp -o Port=733 ~/.ssh/id_rsa.pub USER@example.net:/home/example/.ssh/authorized_keys
ssh -p 733 USER@example.net
,则无需输入
再次密码,密码减去认证比任何脚本更安全。