i3 ssh配置无需密码即可解锁

时间:2020-02-23 14:37:53  来源:igfitidea点击:

我想与我们分享有关如何配置i3 ssh会话的技巧,以便在登录桌面后记住密码短语。如果我们曾经使用过i3窗口管理器,那么绝对可以肯定i3很棒,我们可以将其永久保留。

什么是i3

对于那些不熟悉i3的用户,i3是一个动态的平铺窗口管理器,具有清晰,可读和记录化的代码,具有对Xinerama的扩展支持,使用libxcb而不是xlib。

i3 ssh问题?

关于i3的唯一困扰很多的问题是,每当我们启动一个新的终端窗口并尝试ssh到远程计算机时,即使我们已使用ssh-agent和ssh-add命令将其保存,它也会询问我们密码。

准备工作:

安装并配置x11-ssh-askpass。我在Arch Linux机器上执行此操作。请查阅有关Linux发行版的相关文档。

$sudo pacman -S x11-ssh-askpass libx11 libxt keychain
$sudo ln -sv /usr/lib/ssh/x11-ssh-askpass /usr/local/bin/SSH_ASKPASS
'/usr/local/bin/SSH_ASKPASS' -> '/usr/lib/ssh/x11-ssh-askpass'

$which SSH_ASKPASS
/usr/local/bin/SSH_ASKPASS

然后确保sh-agentalways始终从X会话开始。 My.zshrcfile包含以下行:

if [[ "$TTY" == "/dev/tty1" ]]; then
ssh-agent startx
fi

上面的行也可以放在/etc/profileor~/.bash_profileor~/.bashrc上

i3 ssh:生成ssh密钥

# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/jose/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
.our identification has been saved in 
.pub.public key has been saved in 
The key fingerprint is:
ba:ee:99:36:b3:cb:de:1d:bb:bf:b1:19:05:5a:8e:b9 theitroad@localhost
The key's randomart image is:
+--[ RSA 4096]----+
| |
| |
| o |
| * . |
| S + . . |
| . . . |
| . E o |
| .+= . o = |
| theitroad@localhost=. +o=. |
+-----------------+

当要求输入密码时,请提供一个。

i3 ssh:设置自动解锁ssh密钥

生成ssh密钥后,是时候配置i3环境以在每次启动新Shell时自动解锁ssh密钥,而无需询问密码了。 i3 ssh密码短语应通过ssh-add保存,而无需人工干预。

首先创建一个文件,该文件将保存i3 ssh密码,将其隐藏在只有我们自己可以记住的位置。在我的情况下,该文件为$HOME/.passfile。

cat >$HOME/.passfile<<EOF
#!/bin/bash
echo "your-passphrase-here"
EOF

然后使该文件可执行:

chmod +x $HOME/.passfile

要在启动的每个shell程序窗口上解锁makei3 ssh密码,请使用zsh将以下内容添加到.bashrc或者.zshrc文件中。

echo 'cat ~/.ssh/id_rsa | SSH_ASKPASS="$HOME/.passfile" ssh-add - &>/dev/null' >> ~/.bashrc

源.bashrc可以对我们当前的Shell会话进行更改。

source ~/.bashrc

然后将ssh公钥复制到一台远程计算机上,通过绑定ssh进行测试

$ ssh-copy-id  theitroad@localhost

$cat >> ~/.ssh/config<<EOF
Host zenoss
 User root
 Hostname zenoss.example.com
EOF

$ssh zenoss
Last login: Thu Mar 9 15:46:15 2016 from gateway
[theitroad@localhost ~]#

从上面的输出中,我们应该已经注意到它没有要求我输入密码。