【问题标题】:Bash script that connects to server using ssh [closed]使用 ssh 连接到服务器的 Bash 脚本 [关闭]
【发布时间】:2015-09-29 01:45:33
【问题描述】:

我正在尝试编写一个允许我使用 ssh 连接登录的 bash 脚本。 条件是密码存储在.txt文件中。

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

   ssh USER@example.net -p 733

并自动使用存储在 .txt 文件中的密码

我从来没有用 bash 写过东西。有人能帮我吗。 提前感谢您的宝贵时间。

【问题讨论】:

  • 请考虑使用私钥字段而不是存储在文件中的密码。比这些黑客更容易使用,通常更安全
  • @Wolph 私钥与我的问题有何关联。谢谢。
  • 您可以使用它们代替密码
  • @Wolph 在我的情况下,我需要一个用 bash 编写的函数,该函数将从 .txt 文件中获取密码并在连接到 ssh 服务器时输入密码
  • 沃尔夫是对的。对了,你可以用expectlinux.die.net/man/1/expect

标签: bash ssh


【解决方案1】:

你不能用普通的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 访问远程服务器时考虑使用一对密钥。

【讨论】:

  • 这可能是个坏主意,但话又说回来,明文密码可能没什么大不了的。在工作中,我们在开发过程中不断地 ssh-ing 到嵌入式设备。这些设备都具有相同的默认密码,它甚至发布在我们的网页上。为了节省时间,我们编写了 ssh 命令脚本,这没什么大不了的。话虽如此,总的来说,这是一个非常糟糕的主意。 +1 表示期待。我已经看过很多次了,基本上每个人都只是在说“钥匙”。
  • 每个人都在说“密钥”,因为在您编写一个可以从文件中读取密码并将其与ssh 一起使用的脚本时,您可能已经生成了密钥对并复制了远程服务器的公钥。
  • @buff 首先我要感谢你的代码,它真的非常好,我从来没有使用过 bash/expect 脚本的经验。现在我有另一个,我希望是最后一期。在 .txt 文件中,我保留了 ssh 连接的密码,我有不止一个,只有 1 个有效。我怎样才能以这样的方式循环,脚本将从 .txt 文件中获取所有单词并尝试作为该脚本中的密码。谢谢
【解决方案2】:

我建议您使用无密码身份验证,按照以下步骤操作会更安全:

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你不需要输入 再次使用任何密码,即无密码身份验证比任何脚本更安全。

【讨论】:

    猜你喜欢
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2015-09-04
    • 2021-03-13
    • 1970-01-01
    • 2016-01-12
    • 2013-08-09
    相关资源
    最近更新 更多