我需要为我在fstab中创建的ssh mount创建一个自动登录脚本。
我知道您应该使用安全密钥身份验证来执行此操作,但在这种情况下,由于服务器不允许,因此我无需创建bash脚本以输入密码。
我试过
spawn mount /media/SSH-MUSIC
expect "*?assword:*"
send "password\r"
但我无法让它发挥作用。
fstab条目如下
sshfs#user@xxx.xxx.xxx.xxx:/public/02.MUSIC/media / SSH-MUSIC fuse port = 2223,noauto,users,allow_other,uid = 1001,gid = 1001,rw 0 0 < / p>
有人可以提供允许我自动登录的工作脚本。我已经尝试了谷歌搜索的各种建议,但无法让它工作。
答案 0 :(得分:1)
使用ssh
时,您可以使用密码,也可以使用公钥/私钥集。如果您使用公钥/私钥,则无需输入密码即可将ssh
用于其他计算机:
您需要在两个系统上运行ssh-keygen
。这会在您的计算机上创建一个目录$HOME/.ssh
。在里面,将是两个文件:一个是公钥,一个是私钥。在我的私钥中,私钥称为id_rsa
,公钥称为id_rsa.pub
。这是Linux和Mac OS X的默认设置。
在两个系统上创建这些文件后,您需要使用 public 键并将其粘贴到名为$HOME/.ssh/authorized_keys
的文件中。这将为远程计算机提供公钥,以便识别您的身份。
一旦完成,您应该能够使用ssh
而无需密码,这使得编写使用ssh
的脚本变得更加容易。
答案 1 :(得分:0)
您可以尝试使用sshpass实用程序。我认为这比产卵期望的更容易。
答案 2 :(得分:0)
我相信你在脚本中省略了行尾char(\ n),你的第三行应该是这样的:
send "password\r\n"
答案 3 :(得分:0)
期望通常需要“\ r”作为预期输入的行终止符,输出时需要“\ r \ n”。但是,在这种情况下,您不需要在输入中扫描回车符;它可以用更简单的正则表达式工作。
你可以将这项工作作为一个单行。例如:
expect -c 'spawn mount /media/SSH-MUSIC
expect "assword:" {send "password\r\n"}
interact'
在脚本化命令完成后,您需要 interact 命令将生成的进程的控制权返回给用户。