每次ssh登录服务器的时候都需要输入冗长的ip地址还有密码,有时候记不住还得去翻笔记,所以决定配置一下ssh的免密登录
参考了挺多博客的,但已经记不住了,在这里感谢他们。
每个人的情况都不一样,这里记录一下自己成功的示例,期望自己以后再搞的时候有个参考,也期望可以帮到一些人。
-
确保已经在本机和远程服务器上都正确安装了ssh
试着在本机上面用密码连接一次服务器
ssh username@hostname
-
在本地机器上生成密钥
ssh-keygen -t rsa
会提问选择创建的密钥的路径和名称,名称建议需要对不同机器做出区分的话,可以取不同的名称,要不然就全部默认
生成的密钥文件在
~/.ssh/
目录下
说明一下各个文件的作用:
- config:是配置文件,等下配置一些环境选项方便以后连接不用输入很多命令
- id_rsa_*:刚才生成密钥的私钥(连接服务器时,要使用这个密钥)
- id_ras_*.pub:密钥的公钥(放在服务器上面)
- known_hosts、known_hosts.old:可以不用理会,每次用ssh连接新机器的时候都会加一条标识进去
-
然后现在就需要将本地的公钥添加到服务器的ssh认证列表中
服务器的那个文件路径一般都是
~/.ssh/authorized_keys
中这里可以手动将本地
id_ras_*.pub
复制到其中,也可以通过以下ssh-copy-id
拷贝ssh-copy-id -i 本地的pub路径 username@hostname # 输入密码就可以了 #### 如果win环境下提示没有这个命令,可以换到git-bash中使用
注意:
如果在修改 authorized_keys 文件时,遇到说 Operrations not permit之类的错误,可以百度一下
这里使用的方法是通过
lsattr
命令查看了一些文件的属性然后
chattr -i authorized_keys
就可以修改了修改完后
chattr +i authorized_keys
恢复成原样 -
添加完公钥后,已经可以直接不需要密码登录了,只需要登录的时候指定私钥就可以了
ssh -i ~/.ssh/id_rsa 用户名@主机ip
为了方便,可以配置一些config文件,在
~/.ssh
文件下,没有可以新建一个Host ucloud HostName 主机ip User root PreferredAuthentications publickey IdentityFile 私钥地址,绝对路径 AddKeysToAgent yes
然后就可以通过配置登录
ssh ucloud
如果有多个远程环境的话,也可以配置多个Host,随意