方法0:修改/.ssh/.bash_profile
增加:
eval `ssh-agent`
ssh-add /root/.ssh/vt_download
是修改立即生效:source .bash_profile
方法1:每次手动利用ssh-agent bash+ssh-add 私钥路径 或nohup ssh-add 私钥路径
方法2:修改/etc/sshd/ssh.confg文件,使IdentityFile 私钥路径生效
方法3:使用ssh的配置文件可以在很大程度上方便各种操作,特别适应于有多个ssh帐号、使用非标准端口或者写脚本等情况。
man ssh_config
可以查看手册
如果之前是用密码方式来登录ssh,需要先改用证书方式。可以看最后面生成SSH证书
配置文件
用户配置文件在~/.ssh/config,没有的话新建一个。基本的写法是
Host 名称(自己决定,方便输入记忆的) HostName 主机名 User 登录的用户名 IdentityFile 证书文件路径
两个SSH帐号,一个是github的,一个是其他服务器的,证书文件正如其名,那么可以这样写
Host github.com HostName github.com User git IdentityFile ~/.ssh/github Host server HostName 服务器地址 User 登录用户名 IdentityFile ~/.ssh/server
注意,github的Host必须写成”github.com”。你可以会有其他要求,比如指定端口号、绑定本地端口,这些都可以通过man来查询,比如
Port 端口号 DynamicForward 本地端口号
如果服务器同时有ipv4/ipv6地址,HostName使用域名会比较方便
使用
有了这些配置,很多操作就非常简化了。比如登录服务器
ssh server
传输文件
scp server:~/test .
如果使用Putty等工具,可能需要一些其他操作(转换私钥格式,貌似),自行搜索吧
生成SSH证书
登入服务器端,生成密钥(你使用哪个用户名登录,就在哪个用户名下生成)
ssh-keygen -t rsa
会询问将密钥放在何处,默认即可。然后是输入密码,留空(否则你登录不仅需要私钥还要输入密码)。
完成后在~/.ssh目录下会生成另个文件id_rsa、id_rsa.pub,一个私钥一个公钥。接着执行
cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys
再将id_rsa取回本地,放入~/.ssh并将权限设为400。
服务器端,删掉这两个文件,并修改sshd配置。编辑/etc/ssh/sshd_config如下
PubkeyAuthentication yes PasswordAuthentication no
之后重启sshd服务