因此我通过 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
。