shell密钥登录
服务器面板 2017-10-27 09:18:33

 1.jpg

 

2.jpg

1、阿里云控制台->生成密钥
2、私钥放到本地,导入到ssh软件
3、ssh登陆使用密钥登陆

 

======以上似乎没啥用处... 

 

创建用户user1的时候指定其所属工作组users,例:

useradd –g users user1

 

如果打算装wdcp面板的朋友,建议系统盘为cenos 6.8 64

Enter file in which to save the key (/root/.ssh/id_rsa):  // 默认是存放在/root/.ssh目录中
Enter passphrase (empty for no passphrase):   // 是否需要密码,如果需要,输入密码,如果不需要,直接回车
Enter same passphrase again: // 再输入一次密码,如果没有,直接回车即可
 

 

C/C++ Code复制内容到剪贴板
  1. # 默认回车就好,会在 root目录下自动生产.ssh目录和公钥(id_rsa.pub)私钥(id_rsa)  
  2. ssh-keygen -t rsa  
  3.   
  4.   
  5. cd /root/.ssh  
  6.   
  7.   
  8. ll  
  9. total 8  
  10. -rw——- 1 root root 1675 Jun 8 19:09 id_rsa  
  11. -rw-r–r– 1 root root 408 Jun 8 19:09 id_rsa.pub  
  12.   
  13.   
  14. #新建一个公钥文件,设置权限为600  
  15. touch authorized_keys  
  16. chmod 600 authorized_keys  
  17.   
  18. #将公钥拷贝到authorized_keys  
  19. cat id_rsa.pub >> authorized_keys  
  20.   
  21. #修改配置  
  22. vim /etc/ssh/sshd_config  
  23.   
  24. RSAAuthentication yes  
  25. PubkeyAuthentication yes  
  26. AuthorizedKeysFile .ssh/authorized_keys  
  27. # 进入编辑状态后:  
  28. #i = 进入insert状态  
  29. #ESC + :q!   = 不保存退出编辑状态  
  30. #ESC + :wq! = 保存退出  
  31.   
  32.   
  33. #重启服务(只有root有权限)  
  34. service sshd restart  

 

下一步,去掉密码登录,仅允许密钥登录,所以在这之前,连接FTP,选择ssh登录,将密钥先下载下来

到现在,可以用密钥登录,但是密码还是能登录,所以要去掉密码登录

 

到这一步,看了一下centos占用了多少空间:

QQ图片20171101170244.jpg

C/C++ Code复制内容到剪贴板
  1. //修改配置(普通用户)PermitRootLogin yes    
  2. vim /etc/ssh/sshd_config    
  3.     
  4. ChallengeResponseAuthentication no     
  5. PasswordAuthentication no     
  6. UsePAM yes   //这里有一个坑,如果改为了no,别的用户也登陆不进来了  
  7.     
  8. //重启服务    
  9. service sshd restart    
  10.     
  11.     
  12. //修改配置(root用户)    
  13. vim /etc/ssh/sshd_config    
  14.     
  15. PermitRootLogin no    
  16.     
  17. //重启服务    
  18. service sshd restart    

 

 

到这里,看起来是好了,其实没有。我们会发现root禁止了;其他用户密码不能登录而且密钥也不能登录,这是因为刚才密钥文件只生成在root用户下,所以要拷贝到其他用户下面

创建用户的指令,在指定目录下创建一个名为ydh的用户:

useradd -d /home/ydh -m ydh

 

我已经有一个service用户了,就不用再建了,进入root目录  cd /root/

C/C++ Code复制内容到剪贴板
  1. cd /root/  
  2.   
  3. //强行复制文件或目录,不论目标文件或目录是否已存在  
  4. cp -rf .ssh /home/service  
  5.     
  6. //到service目录下,将文件权限修改    
  7. cd /home/service  
  8. chown service:service -R .ssh  

这样service就能用密钥登录了,密钥需要在之前就要使用FTP连接shell下载下来,下载私钥

 

完成! 

QQ图片20171101170244.jpg

普通用户切换回root

C/C++ Code复制内容到剪贴板
  1. su - root  

 

  

不同用户不同密钥登录,需要 在服务器上

su 用户名

进入不同的用户再走一遍创建密钥即可!

C/C++ Code复制内容到剪贴板
  1. # 1、创建密钥对  
  2. ssh-keygen -b 1024 -t rsa  
  3.   
  4. # -b 1024 采用长度为1024字节的公钥/私钥对,最长4096字节。  
  5. # -t rsa 采用rsa加密方式的公钥/私钥对,除了rsa还有dsa方式,rsa方式最短不能小于768字节长度。  
  6. # 如果还需要使用更多其他参数请参考man ssh-keygen  
  7.   
  8. # 2、将/home/用户名/.ssh/id_rsa拷贝到ssh的客户端  
  9.   
  10. cd /home/用户名/  
  11. #给密钥目录设置权限  
  12. chmod 700 .ssh/  
  13. cd .ssh  
  14. mv id_rsa.pub authorized_keys  
  15. chmod 600 authorized_keys  

 

 将.ssh目录改为test用户和testusers组:

在/home/用户/.ssh目录执行:

C/C++ Code复制内容到剪贴板
  1. chown -R test:testusers ./  

 

重启服务:service sshd restart

 

本地git用户免密提交

C/C++ Code复制内容到剪贴板
  1. ssh-keygen -t rsa  

本地先生成密钥对(如果生成好,Mac下一般在 ~/.ssh 目录下 id_rsa.pub 文件)

将其中的公钥,.pub结尾的文件内容,发给服务器

到服务器上执行:

追加公钥即可

C/C++ Code复制内容到剪贴板
  1. cat /tmp/id_rsa_user1.pub >> ~/.ssh/authorized_keys  

 


 

git用户限制ssh登录服务器

编辑/etc/passwd这个文件,在文件末尾可以找到类似这样的行:

git:x:1002:1002::/home/git:/bin/sh

改为:

git:x:1002:1002::/home/git:/usr/bin/git-shell

把/bin/sh改为/usr/bin/git-shell,这样git这个账户就只能用来克隆或者推送数据到git仓库中了,而不能用它来登录到主机。

 


报错:Permission denied (publickey) 

第一步:检查您是否连接到正确的服务器

C/C++ Code复制内容到剪贴板
  1. $ ssh -vT git@github.com  
  2.   
  3. OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011  
  4. debug1: Reading configuration data /Users/you/.ssh/config  
  5. debug1: Reading configuration data /etc/ssh_config  
  6. debug1: Applying options for *  
  7. debug1: Connecting to github.com [IP ADDRESS] port 22.  

 

第二步:检查登录用户是否生效

C/C++ Code复制内容到剪贴板
  1. $ ssh -T git@47.70.30.30                           
  2. git@47.70.30.30: Permission denied (publickey).  

权限被拒绝(publickey)。

正确的提示语应该是:

 Hi username! You've successfully authenticated...

 

第三步:查看详情

C/C++ Code复制内容到剪贴板
  1. $ ssh -vvv 47.00.00.00  

 

2018.10.13报错原因:登录用户被禁用,删掉用户及用户组,重新建一个git用户即可

 

本文来自于:http://www.yoyo88.cn/study/control/184.html

Powered by yoyo苏ICP备15045725号