SSH相关

配置ssh

之前要在本机上装上ssh,可以通过sudo apt-getinstallssh或者通过新立德来安装。如果没有进行配置的话,登录到本机或者远程主机需要该主机的密码才行。下面进行无密码登录的配置:

 很简单,执行ssh-keygen-t rsa命令,一路敲回车就行了,就在.ssh文件夹下生成了2个文件,一个公钥和一个私钥文件, id_rsa  id_rsa.pub ,然后执行cp  ~/.ssh/id_rsa.pub~/.ssh/authorized_keys命令。这样配置之后就可以实现无密码登录本机。如果需要登录到远程主机,只需要将authorized_keys文件发送到远程主机的~/.ssh/目录下。

現在的 ssh 使用同樣的方法會出現錯誤訊息

Agentadmitted failure to sign using the key


解決方式 使用 ssh-add 指令将私钥 加进来(根据个人的密匙命名不同更改 id_rsa)
# ssh-add  ~/.ssh/id_rsa

ssh-add adds private key identities to the	authentication agent,
     ssh-agent(1).  When run without arguments,	it adds	the files
     ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and
     ~/.ssh/identity.  After loading a private key, ssh-add will try to load
     corresponding certificate information from	the filename obtained by
     appending -cert.pub to the	name of	the private key	file.  Alternative
     file names	can be given on	the command line.



再通过ssh 主机名 就可以实现无密码登录了。

http://www.cnblogs.com/dlutxm/archive/2011/10/14/2212019.htmlhttp://www.cnblogs.com/dlutxm/archive/2011/10/14/2212019.html


使用ssh-agent减少输入ssh私钥密码的次数

最近将一个git工程拆分成了很多个小的repository,以至于在更新一次repo的时候需要输入ssh私钥密码多达11次(= =|||),以前听说过ssh-agent这东西,然后说,那就试试看吧

启动ssh-agent

调用ssh-agent会打出诸如

1
2
3
4
$ ssh -agent
SSH_AUTH_SOCK= /tmp/ssh-iHsPBoPR2838/agent .2838; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2839; export SSH_AGENT_PID;
echo Agent pid 2839;

这样的信息,可以看出这是几行bash命令(设置相关的环境变量),所以我们可以使用

1
eval ` ssh -agent`

将这几行bash运行起来。

使用ssh-add托管私钥

1
2
$ ssh -add  # 添加缺省私钥
$ ssh -add ~/. ssh /tydus_rsa # 指定添加私钥

添加私钥的时候需要输入密码,ssh-add会将解密后的私钥安全地保存在ssh-agent的私钥空间。
添加之后再使用ssh系即可免密码使用私钥验证

1
2
3
$ ssh vps
$ scp vps: /tmp/what/is/it .
$ git clone vps: /var/git/some/thing

关闭ssh-agent

同样,使用ssh-agent -k可以关闭当前的(SSH_AGENT_PID指定的)ssh-agent,相当于“注销”操作,在不安全的环境下非常有用。

1
$ eval ` ssh -agent -k`

在bashrc中添加自动脚本实现ssh-agent的daemonize

1
2
3
4
5
6
7
8
9
10
11
12
13
# Enable ssh-agent for ssh keys
if [ -f ~/.agent. env ]; then
     . ~/.agent. env > /dev/null
     if ps x | grep - v grep | grep -q $SSH_AGENT_PID ; then
         #echo "Stale agent file found. Spawning new agent..."
         eval ` ssh -agent | tee ~/.agent. env `
         ssh -add ~/. ssh /tydus_rsa
     fi 
else
     #echo "Starting ssh-agent..."
     eval ` ssh -agent | tee ~/.agent. env `
     ssh -add ~/. ssh /tydus_rsa
fi

下面来解释一下:
~/.agent.env存放这次会话时可用的agent环境变量,供下个会话使用
第四行检测发现$SSH_AGENT_PID指向的进程不存在,那么就重新打开一个
然后向当前agent添加key,这里是~/.ssh/tydus_rsa

这样的话就可以只在第一次登录(或者当前agent失效,和sudo的机制类似)的时候输入密码了,是不是很方便> <



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值