使用SSH连接到服务器的Bash脚本

问题描述:

我想写一个bash脚本,它允许我使用SSH连接登录。 条件是密码存储在.txt文件中。使用SSH连接到服务器的Bash脚本

我需要写一个bash脚本,它会自动请求

ssh [email protected] -p 733 

一个连接,并自动将使用存储成txt文件

我从来没有写过在bash一些密码。有人能帮我吗。 预先感谢您的时间。

+6

请查看使用私钥fiels而不是存储在文件中的密码。更容易使用,通常比这些黑客更安全 – Wolph

+0

@Wolph私钥如何与我的问题相关。谢谢。 – Chris

+0

你可以使用它们而不是密码 – Wolph

你不能用简单的bash脚本来完成。您需要使用expect命令。

话虽如此它确实是一个非常糟糕的主意,有存储在一个文本文件密码,这里是如何使用expect做到这一点:

#!/usr/bin/expect 

set timeout 20 
set f [open "password.txt"] 
set password [read $f] 
close $f 

spawn ssh [email protected] 
expect "[email protected]'s password:" 
send $password 
interact 

我仍然建议关注@ Wolph的建议在使用ssh访问远程服务器时使用一对密钥进行调查。

+0

这可能是个不错的主意,但是再一次,有一个密码可能不是什么大不了的以明文形式。在工作中,我们在开发过程中不断地嵌入到嵌入式设备中。这些设备都有相同的默认密码,它甚至发布在我们的网页上。为了节省时间,我们编写了ssh命令,这没什么大不了的。这就是说,总的来说,这是一个非常糟糕的主意。预期+1。我已经看过很多次了,每个人基本上只是说“钥匙”。 – evading

+0

每个人都在说“密钥”,因为在编写一个脚本可以从文件读取密码并将其与ssh配合使用时,您可以生成密钥对并将公钥复制到远程服务器。 – chepner

+0

@buff首先我要感谢你的代码,它真的非常好,我从来没有使用bash/expect脚本的经验。现在我有另一个,我希望最后一个问题。在.txt文件中,我保留了ssh连接的密码,我有更多的一个,只有1个作品。我该如何循环以便脚本将所有单词从中取出。txt文件并在此脚本中尝试作为密码。谢谢 – Chris

我建议你使用密码较少验证这将是更安全请按照下列步骤操作:

[email protected]:~/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 [email protected] 
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 [email protected]:/home/example/.ssh/authorized_keys 
  • 然后它会问你第一时间为您的远程服务器对于最新的 时间
  • 现在如果你输入ssh -p 733 [email protected]你不需要把 任何密码再次,这是密码更少的身份验证比任何脚本更安全。