无法通过 Bash 脚本使用私钥进行 SSH

And*_*rew 4 bash ssh permissions shell-script

首先,如果这是一个非常明显/微不足道的问题,我深表歉意,我仍在学习 linux/unix 的来龙去脉。

我使用了一些需要通过 ssh 和私钥访问才能登录的服务器。所以,命令是这样的:

ssh -i /path/to/key.pem user@000.000.000.000

我已经创建了一个 bash 脚本,让我只使用自己的调用,access,并且只有一个基本的 switch 语句来控制我登录的服务器。例如,access server1将发出适当的ssh命令登录到 server1。

问题

ssh呼叫刚刚挂断,我留下,将不接受空终端SIGINTCtrl+ C),我必须退出终端,并再次打开它,甚至用它。

据我所知,这可能是私钥的权限问题。它的权限目前是600. 将其更改为644给我一个错误,即权限太开放并退出ssh尝试。有什么建议吗?

Jak*_*uje 6

  1. 目前ssh_config,对于这一点,提出在这里你可以指定你的主机别名和密钥并将其存储,而无需创建这样的切腹作为的bash脚本这样做。它基本上~/.ssh/config以这种格式存储在您的文件中:

    Host host1
      Hostname 000.000.000.000
      User user
      IdentityFile /path/to/key.pem
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可以简单地打电话

    ssh host1
    
    Run Code Online (Sandbox Code Playgroud)

    到达,得到 000.000.000.000

  2. 如果您真的想提高效率并拥有更短的快捷方式,那么 bashalias比 bash 脚本更合适。

    alias access="ssh -i /path/to/key.pem user@000.000.000.000"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果你真的想使用 bash 脚本,你需要强制 ssh 使用-tt选项在远程服务器上分配你的 TTY :

    ssh -tti /path/to/key.pem user@000.000.000.000
    
    Run Code Online (Sandbox Code Playgroud)

欲了解更多的技巧,你可以浏览该手册页sshssh_config