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 ~]#
从上面的输出中,我们应该已经注意到它没有要求我输入密码。