努力创建一个 ssh + 密码启动器

努力创建一个 ssh + 密码启动器

因此我通过 Google 搜索发现您可以创建别名.bashrc以确保您可以快速访问 ssh 服务器,如下所示:

alias connectme='ssh [email protected] -p 999'

这很好,我只需要输入connectme密码。我又谷歌了一下,发现你可以这样做

alias connectme='sshpass -p "thepasswordincleartext" ssh [email protected] -p 999'

(是的,第二个-p命令正确传递为“端口”而不是“密码”;ssh)我在 Google 上搜索了一些内容,然后开始创建一个.desktop启动器。

就在那时我遇到了一个障碍:

  • 该别名的无密码版本可以工作,但我每次都必须输入密码。
  • 或者我添加sshpass,并且在连接完成后终端窗口关闭。

(我尝试强制终端在选项中命令完成后保持打开状态,那时我意识到 .desktop 运行器实际上输入了“exit”并强制断开连接)

以下是我正在处理的内容:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Exec=bash -c 'exec bash -i <<<"connectme"'
Name=connectme
Comment=connectme
Icon=/home/user/.local/share/icons/debian.png

这种精心设计的愚蠢行为:

bash -c 'exec bash -i <<<"command"'

之所以这样做,是因为出于某种原因,Exec 不包含 bash 和您的用户空间领域。我不知道为什么。

如何使用捆绑密码为 ssh 设置一个可以工作的启动器(以及为什么不在连接时将第一个命令传送到远程服务器)?

如果需要的话,我愿意编辑环境。

答案1

不要将密码放在别名中,而是使用ssh-copy-id将您的公共 ssh 密钥复制到目标,并使用~/.ssh/config指定详细信息。例如,这是我的~/.ssh/config

$ cat .ssh/config
# alias aardvark='ssh -l w3 aardvark '
# alias cookie='ssh -l walt cookie '
# alias fw='ssh -l root -p 8022 spark2y '
# alias squid='ssh -l walt squid '
# alias wombat='ssh -l walt wombat '
#
Host aa
     Hostname aardvark
     User w3
     ForwardX11 yes
     Protocol 2

Host ck
     Hostname cookie
     User walt
     ForwardX11 yes
     Protocol 2

Host fw
     Hostname spark2y
     User root
     Port 8022
     ForwardX11 yes
     Protocol 2

Host sq
     Hostname squid
     User walt
     ForwardX11 yes
     Protocol 2

Host wm
     Hostname wombat
     User walt
     ForwardX11 yes
     Protocol 2

man ssh-copy-id;man ssh;man ssh_config

相关内容