Centos7 密鑰對登陸(適用於群暉DSM)


 

www.swack.cn - 原文鏈接:Centos7 密鑰對登陸(適用於群暉DSM)

 

1.生成證書

 

此處證書使用swack用戶生成

注:不要使用root生成證書,因為我們后面會禁用root登陸

[swack@localhost ~]$ ssh-keygen -t rsa -b 2048 -C "swack_test"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/swack/.ssh/id_rsa):
Created directory '/home/swack/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/swack/.ssh/id_rsa.
Your public key has been saved in /home/swack/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BRidXhVBsAYWEt73wp8KzQa52vXLMKyvyEpuV8NGd44 swack_test
The key's randomart image is:
+---[RSA 2048]----+
| +==o.+=o |
| ..+oo.. |
| ....= |
| o... |
| oS.o+. |
| =Eo.. |
| . oo.O o |
| o...+ = * |
| .oo+ +oo +. |
+----[SHA256]-----+

 

執行完畢后,會在用戶home目錄生成.ssh目錄,其下生成兩個證書文件

 

  • 公鑰文件:.ssh/id_rsa.pub
  • 密鑰文件:.ssh/id_rsa

 

2.配置ssh

 

修改 /etc/ssh/sshd_config 可以配置ssh的相關參數(需要root權限)

 

[root@localhost swack]# vim /etc/ssh/sshd_config

 

為了使得系統安全性進一步提高,我們做一下更改

 

  • 修改默認ssh的默認端口22到8022(此處端口可自定義)
  • 禁用密碼認證進制
  • 禁止root權限登陸
  • 使用密鑰對登陸

 

# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port 8022 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m PermitRootLogin no #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 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 #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication no # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options GSSAPIAuthentication yes GSSAPICleanupCredentials no #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no #GSSAPIEnablek5users no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several # problems. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation sandbox #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no #UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server 

 

此處如下修改:

 

  • Port 8022
  • PasswordAuthentication no
  • PermitRootLogin no
  • PubkeyAuthentication yes

 

重啟ssh服務

 

[root@localhost swack]# systemctl restart sshd.service

 

2.配置公鑰

 

在.ssh目錄,新建一個文件

 

  • 證書驗證文件:.ssh/authorized_keys

 

將公鑰證書文件寫到證書驗證文件里

 

[swack@localhost ~]$ touch .ssh/authorized_keys
[swack@localhost ~]$ cat /home/swack/.ssh/id_rsa.pub >> /home/swack/.ssh/authorized_keys
[swack@localhost ~]$ cat .ssh/authorized_keys
ssh-rsa
AAAAB3NzaC1yc2EAAAA...
swack_test

注:這里需要把允許登陸的centos7服務的終端的公鑰id_rsa.pub添加到authorized_keys文件中

3.設置 .ssh 目錄權限

 

[swack@localhost ~]$ chmod -R 700 .ssh
[swack@localhost ~]$ chmod 600 .ssh/authorized_keys

 

4.測試登陸(基於windows 10)

 

需要生成客戶本地主機的公鑰,並把密鑰寫入服務器的authorized_keys文件中

 

ssh登陸

 

此處使用的工具是GitBash

下載地址:WinSCP-5.15-Setup.exe

使用 ssh -p 8022 swack@192.168.241.3 登陸

 

linux_20190527_5

 

sftp登陸

 

此處我們使用的工具是WinSCP

下載地址:Git-2.15.1.2-64-bit.exe

linux_20190527_3

 

在WinSCP的高級設置里選擇密鑰文件

 

linux_20190527_4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM