ssh使用过程中的遇到的问题及解决方法

写在前面

       最近在使用ssh过程中遇到了一些问题,虽然很容易解决,但是有些容易造成我疑惑的地方,借此机会将这些问题及解决方法记录下来,以免以后忘记,与大家共勉。

ssh免密登录

       目前linux中一般都已经默认安装了ssh。主要就是在使用ssh的时候想要免密登录的问题,我在设置这个免密登录时,查看了许多博客,感觉博客中都会介绍ssh需要生成秘钥,然后发送公钥,保留私钥的问题,但是我感觉没有说清楚是由哪一方来生成秘钥。我自己在设置的时候,就弄反过,导致设置得不太好。写几点我的总结,希望对大家有帮助。

  • 发送公钥的一方是客户端,所以生成秘钥的工作要由客户端来完成。这里的客户端说的是想要去远程登录的一方,linux系统虽然通常作为服务器端,但是它也会发生角色转换的时候,有时候它也会作为客户端去连接其他服务器。
  • 服务器端要做的就是将公钥放到用户家目录下的.ssh文件夹下(没有.ssh文件夹可以自行创建),然后将公钥中的内容复制到authorized_keys文件中(authorized_keys文件位于.ssh中,没有的话也需自行创建)。
  • 客户端公钥上传到服务器端并将内容复制到authorized_keys后,有些服务器还是无法远程登录,例如cent os、redhat等,此时就需要去修改服务器端的配置文件了(此时需要root权限)

ssh免密登录的详细步骤

  1. 配置服务器端的ssh访问
# 1.在用户家目录下创建.ssh的配置,如果此文件夹已经存在请忽略此步。
$ mkdir .ssh

# 2. 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。
$ cd ~/.ssh
$ touch authorized_keys

# 3. 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。
$ chmod 700 /home/git/.ssh/
$ chmod 600 /home/git/.ssh/authorized_keys

此时,服务端的配置基本完成。接下需要把客户端的公钥拷贝到authorized_keys文件中。

  1. 客户端生成秘钥,并将公钥上传至服务器

以下是客户端创建ssh私钥和拷贝的过程,如果您有私钥越过创建私钥的过程。
请用您的客户端进入终端,如果客户端是Windows系统,建议先安装git软件,下载地址

第一步: 创建客户端的ssh私钥和公钥

检查是否已经拥有ssh公钥和私钥:进入用户的主目录。

用户主目录:
Windows系统:C:\Users\用户名
Linux系统:/home/用户名
Mac系统:/Users/用户名

然后查看是否有.ssh文件夹,此文件夹下是否有如下几个文件。

# 用户主目录的.ssh文件夹下
.ssh
├── id_rsa
└── id_rsa.pub  # 我们要用的公钥

如果没有,那么用ssh-keygen创建ssh的私钥。

ssh-keygen -t rsa
# 接下来,三个回车默认即可。

创建私钥成功后,在查看用户目录是否有意加有了公钥文件id_rsa.pub

第二步: 拷贝私钥到git的服务器

如何把客户端的文件拷贝到服务器端,我建议用scp命令进行拷贝。
以下以linux为例:

# 首先进入我的用户主目录的.ssh目录下,注意用户名xxx替换成自己的
$ cd ~/.ssh

# 以下命令是:把本地的id_rsa.pub文件拷贝到CentOS服务器,登录账号是git。
# 冒号后面默认就是git账号的主目录,最后文件被保存成laoma.pub
# scp使用方式为:scp 本地文件 远程服务器用户名@远程主机ip地址或主机名或域名:文件保存位置。
$ scp ./id_rsa.pub [email protected]:.ssh/laoma.pub
  1. 服务器端添加客户端的SSH公钥
    切换到服务器端,把刚才上传的laoma.pub文件的内容添加到 authorized_keys中,就可以允许客户端ssh访问了。
# 切换到git账户
$ su - git

$ ls -al
# 查看一下.ssh目录是否有authorized_keys和laoma.pub文件
# .
# |-- authorized_keys
# `-- laoma.pub

# 如果有,那么进行下面的把laoma.pub文件中的内容添加到authorized_keys中.
$ cat laoma.pub >> authorized_keys

# >> 是在文件后面追加的意思,主要如果用其他编辑器,每个ssh的pub要单独一行,建议用cat命令方便简单。

到此为止,您配置的客户端应该可以ssh的方式免密登录服务器端了。
万一出现还是需要密码才能登录的情况,那么就去修改sshd_config配置文件,参考如下命令。

sudo vim /etc/ssh/sshd_config

       找到如下命令修改成如下所示的情况(大概在50行左右)。

RSAAuthentication yes
PubkeyAuthentication yes
 
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

       有的系统中可能没有RSAAuthentication yes,需要我们自行填写上。最后保存成功,就可以尝试远程登录服务器端了,就可以发现可以实现免密登录了。完美!!!

文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章