您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何進行遠程連接與openssh,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
1、openssh簡介
傳統的網絡程序都是采用明文傳輸數據和密碼,如telnet、ftp等,存在很大的安全漏洞,***只需要使用一些數據包截取工具就可以獲得包括密碼在內的重要數據。正因如此,后來才出現了SSH (Secure shell,安全命令殼)。SSH是由芬蘭的一家公司所研發的加密通信協議,所有SSH傳輸的數據都是經過加密,可以有效防止數據的竊取以及'中間人'的***。SSH建立在應用層和傳輸層基礎上的安全協議,監聽tcp的22號端口,屬于是文本協議。OpenSSH是SSH的替代軟件,完全免費并且開放源代碼。當前ssh協議版本主要有兩種:
sshv1是基于CRC-32做MAC,因此,不安全,建議勿用; sshv2基于雙方主機協商選擇最安全的MAC實現機制;加密機制及MAC機制是雙方協商選定;基于DH實現密鑰交換,基于RSA或DSA實現身份認證;客戶通過檢查服務端的主機密鑰來判定是否與其進一步通信。 |
基于sshv2版本的通信方式主要如下圖所示;
在Centos6中已經默認安裝了openssh,可以使用如下命令查看安裝情況:
[root@mylinux ~]# rpm -qa |grep ssh openssh-clients-5.3p1-118.1.el6_8.x86_64 #openssh的客戶端程序 libssh3-1.4.2-2.el6_7.1.x86_64 #openssh的協議實現模塊 openssh-5.3p1-118.1.el6_8.x86_64 #openssh的主程序文件 openssh-server-5.3p1-118.1.el6_8.x86_64 #openssh的服務器程序
安裝openssh后,會在系統中創建名為sshd的服務,用戶可以通過該服務啟動或關閉openssh。默認情況下,openssh會開機自動啟動。
[root@mylinux ~]# chkconfig --list sshd sshd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉 [root@mylinux ~]# chkconfig --level 2345 sshd off [root@mylinux ~]# chkconfig --list sshd sshd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉 [root@mylinux ~]# chkconfig --level 2345 sshd on [root@mylinux ~]# service sshd start [root@mylinux ~]# /etc/init.d/sshd stop 停止 sshd: [確定] [root@mylinux ~]# /etc/init.d/sshd start 正在啟動 sshd: [確定] [root@mylinux ~]# /etc/init.d/sshd status openssh-daemon (pid 19535) 正在運行...
2、openssh配置文件
openssh配置文件
openssh的主要配置文件有兩個:/etc/ssh/ssh_config和/etc/ssh/sshd_config,它們分別用于配置openssh客戶端以及服務器端。此外,/etc/ssh目錄中還有一些其他的系統級配置文件,其中各配置文件的名稱以及功能說明為:
moduli #配置用于構建安全傳輸層所必須的秘鑰組 ssh_config #系統級的SSH客戶端配置文件 sshd_config #sshd守護進程的配置文件 ssh_host_dsa_key #sshd進程的DSA私鑰 ssh_host_dsa_key.pub #sshd進程的DSA公鑰 ssh_host_key #SSH1版本所使用的RSA私鑰 ssh_host_key.pub #SSH1版本所使用的RSA公鑰 ssh_host_rsa_key #SSH2版本所使用的RSA私鑰 ssh_host_rsa_key.pub #SSH2版本所使用的RSA公鑰
服務器配置文件/etc/ssh/sshd_config
/etc/ssh/sshd_config是openssh服務器的配置文件,通過更改該文件中的配置可以改變sshd進行的運行屬性。該文件中每一行都是用'選項 值'的格式,其中'選項'不區分大小寫。
[root@promote ssh]# cat sshd_config # $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm 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:/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 change a # default value. #Port 22 #sshd監聽端口,默認為22 #AddressFamily any #ListenAddress 0.0.0.0 #sshd服務綁定的IP地址 #ListenAddress :: # Disable legacy (protocol version 1) support in the server for new # installations. In future the default will change to require explicit # activation of protocol 1 Protocol 2 #默認只用2.*版本的ssh協議 # HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key #ssh2版本的秘鑰存放位置 # HostKeys for protocol version 2 #HostKey /etc/ssh/ssh_host_rsa_key #ssh3版本的RSA秘鑰存放位置 #HostKey /etc/ssh/ssh_host_dsa_key #ssh3版本的DSA秘鑰存放位置 # Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 1h #秘鑰每隔1小時生成一次 #ServerKeyBits 1024 #ssh服務器秘鑰的位數 # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH #設置sshd發送到syslog所使用的日志類型 SyslogFacility AUTHPRIV #默認為AUTHPRIV #LogLevel INFO #syslog日志等級 # Authentication: #LoginGraceTime 2m #PermitRootLogin yes #如果為yes則允許root用戶使用ssh登錄,no則不允許 #設置sshd在接受登錄請求前是否檢查用戶的主目錄以及rhost文件的權限和所有者等信息 #StrictModes yes #MaxAuthTries 6 #設置最多允許6次登錄失敗 #MaxSessions 10 #設置最大連接數為10 #RSAAuthentication yes #是否允許RSA驗證 #PubkeyAuthentication yes #是否允許公鑰驗證 #AuthorizedKeysFile .ssh/authorized_keys #公鑰文件的存放位置 #AuthorizedKeysCommand none #AuthorizedKeysCommandRunAs nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no #設置sshd在進行RhostsRSAAuthentication驗證時是否信任用戶的'~/.ssh/known_hosts'文件 # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes #驗證時是否使用'~/.rhosts 和 ~/.shosts'文件 # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes #設置是否需要密碼驗證 # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #Kerberos 驗證 #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options #GSSAPI 驗證 #GSSAPIAuthentication no GSSAPIAuthentication yes #GSSAPICleanupCredentials yes GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange 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'. #UsePAM no UsePAM yes #是否使用PAM驗證 # 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 #AllowAgentForwarding yes #是否允許TCP轉發 #AllowTcpForwarding yes #GatewayPorts no #X11Forwarding no #設置sshd是否允許x11轉發 X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #TCP活動保持 #UseLogin no #UsePrivilegeSeparation yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #客戶端活動間隔時間 #ClientAliveCountMax 3 #活動客戶端的最大數量 #ShowPatchLevel no #UseDNS yes #PidFile /var/run/sshd.pid #保存進程ID號的文件位置 #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none # no default banner path #Banner none # 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 # ForceCommand cvs server
客戶端配置文件/etc/ssh/ssh_config
[root@promote home]# cat /etc/ssh/ssh_config # $OpenBSD: ssh_config,v 1.25 2009/02/17 01:28:32 djm Exp $ # This is the ssh client system-wide configuration file. See # ssh_config(5) for more information. This file provides defaults for # users, and the values can be changed in per-user configuration files # or on the command line. # Configuration data is parsed as follows: #配置選項生效的優先級 # 1. command line options #1表示命令行選項 # 2. user-specific file #2表示用戶指定文件 # 3. system-wide file #3表示系統范圍的文件 # Any configuration value is only changed the first time it is set. # Thus, host-specific definitions should be at the beginning of the # configuration file, and defaults at the end. # Site-wide defaults for some commonly used options. For a comprehensive # list of available options, their meanings and defaults, please see the # ssh_config(5) man page. # Host * #適用的計算機范圍,'*'表示全部 # ForwardAgent no #連接是否經過驗證代理轉發給遠程計算機 # ForwardX11 no #設置是否自動重定向x11連接 # RhostsRSAAuthentication no #設置是否使用RSA進行rhosts的安全驗證 # RSAAuthentication yes #設置是否使用RSA進行安全驗證 # PasswordAuthentication yes #設置是否需要密碼驗證 # HostbasedAuthentication no # GSSAPIAuthentication no # GSSAPIDelegateCredentials no # GSSAPIKeyExchange no # GSSAPITrustDNS no # BatchMode no #如果為yes,則禁止交互輸入密碼是的提示信息 # CheckHostIP yes # AddressFamily any # ConnectTimeout 0 # StrictHostKeyChecking ask # IdentityFile ~/.ssh/identity # IdentityFile ~/.ssh/id_rsa #RSA安全驗證文件的位置 # IdentityFile ~/.ssh/id_dsa #DSA安全驗證文件的位置 # Port 22 #服務器端口 # Protocol 2,1 #使用的ssh協議 # Cipher 3des #加密密碼 # Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 # EscapeChar ~ #設置EscapeChar字符 # Tunnel no # TunnelDevice any:any # PermitLocalCommand no # VisualHostKey no Host * GSSAPIAuthentication yes # If this option is set to yes then remote X11 clients will have full access # to the original X11 display. As virtually no X11 client supports the untrusted # mode correctly we set this to yes. ForwardX11Trusted yes #是否允許轉發x11會話 # Send locale-related environment variables #局部環境變量 SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE SendEnv XMODIFIERS
3、ssh/scp相關命令的使用
SSH遠程登錄
SSH是openssh所提供的加密方式的遠程登錄程序,可以替代傳統不安全的Telnet、rsh等程序。使用SSH登錄Linux服務器后可以使用操作系統的所有功能,這與Telnet沒有區別,但是SSH為客戶端和服務器之間建立了加密的數據傳送通道,更加安全和可靠。命令格式為:
ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]
常用命令選項: -1:強制只使用SSH1版本協議 -2:強制只使用SSH2版本協議 -4:強制只是用IPv4地址 -6:強制只是用IPv6地址 -A:啟用認證代理連接的轉發 -a:禁止認證代理連接的轉發 -b bind_address:使用bind_address作為連接的源地址 -C:壓縮所有數據 -D [bind_address:]port:指定本地動態應用級別端口轉發 -g:允許遠程主機連接本地轉發端口 -l login_name:指定SSH登錄遠程主機的用戶 -p port:指定連接的端口 -q:安靜模式,忽略所有的警告信息 -V:顯示版本信息 -v:顯示調試信息 -X:允許X11連接轉發 -x:禁止X11連接轉發 |
[root@promote home]# ifconfig #查看當前主機IP eth0 Link encap:Ethernet HWaddr 00:0C:29:B7:AB:D0 inet addr:192.168.191.128 Bcast:192.168.191.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feb7:abd0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1002 errors:0 dropped:0 overruns:0 frame:0 TX packets:669 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90190 (88.0 KiB) TX bytes:89614 (87.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:113 errors:0 dropped:0 overruns:0 frame:0 TX packets:113 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:18338 (17.9 KiB) TX bytes:18338 (17.9 KiB) [root@promote home]# ssh 192.168.191.129 #連接遠程主機192.168.191.129 The authenticity of host '192.168.191.129 (192.168.191.129)' can't be established. RSA key fingerprint is c6:4b:1c:ca:5b:fd:9f:6e:7f:0a:20:59:9d:79:94:3f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.191.129' (RSA) to the list of known hosts. reverse mapping checking getaddrinfo for promote.cache-dns.local [192.168.191.129] failed - POSSIBLE BREAK-IN ATTEMPT! root@192.168.191.129's password: Last login: Wed May 17 03:53:02 2017 from 192.168.191.1 #連接成功 [root@promote ~]# ifconfig #查看連接后的主機IP eth0 Link encap:Ethernet HWaddr 00:0C:29:F0:56:04 inet addr:192.168.191.129 Bcast:192.168.191.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef0:5604/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:57 errors:0 dropped:0 overruns:0 frame:0 TX packets:51 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7404 (7.2 KiB) TX bytes:6924 (6.7 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
使用scp進行遠程文件復制
scp的全稱為secure copy(安全性復制),可以實現與rcp服務一樣的遠程文件復制功能。但由于scp是基于ssh協議,實現了數據的加密,所以它比傳統的rcp更加安全可靠,其命令格式為:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2
常用命令選項: -1:強制只使用SSH1版本協議 -2:強制只使用SSH2版本協議 -4:強制只是用IPv4地址 -6:強制只是用IPv6地址 -C:壓縮所有數據 -l:限制傳輸速率,單位為KB/秒 -P port:指定連接的端口 -r:遞歸方式復制目錄所有內容 -v:調試方式,顯示更多的輸出信息 |
遠程復制單個文件
[root@mylinux ~]# scp mbr.dmp root@192.168.191.129:/home reverse mapping checking getaddrinfo for promote.cache-dns.local [192.168.191.129] failed - POSSIBLE BREAK-IN ATTEMPT! root@192.168.191.129's password: mbr.dmp 100% 512 0.5KB/s 00:00
遠程復制整個目錄
[root@mylinux ~]# scp -r /etc/yum.repos.d root@192.168.191.129:/home/ reverse mapping checking getaddrinfo for promote.cache-dns.local [192.168.191.129] failed - POSSIBLE BREAK-IN ATTEMPT! root@192.168.191.129's password: epel-testing.repo 100% 1056 1.0KB/s 00:00 CentOS-Media.repo 100% 630 0.6KB/s 00:00 epel.repo 100% 957 0.9KB/s 00:00 CentOS-Base.repo 100% 1926 1.9KB/s 00:00 CentOS-Debuginfo.repo 100% 638 0.6KB/s 00:00 CentOS-Vault.repo 100% 3664 3.6KB/s 00:00
使用通配符
[root@promote home]# scp -r /etc/httpd/* root@192.168.191.129:/home/ reverse mapping checking getaddrinfo for promote.cache-dns.local [192.168.191.129] failed - POSSIBLE BREAK-IN ATTEMPT! root@192.168.191.129's password: magic 100% 13KB 12.8KB/s 00:00 httpd.conf 100% 34KB 33.6KB/s 00:00 php.conf 100% 674 0.7KB/s 00:00 README 100% 392 0.4KB/s 00:00 welcome.conf 100% 299 0.3KB/s 00:00 access_log-20170512 100% 34KB 34.2KB/s 00:00 error_log-20170512 100% 3278 3.2KB/s 00:00 error_log 100% 0 0.0KB/s 00:00 access_log 100% 0 0.0KB/s 00:00 mod_proxy_ftp.so 100% 35KB 34.8KB/s 00:00 mod_setenvif.so 100% 14KB 14.2KB/s 00:00 mod_log_config.so 100% 31KB 30.5KB/s 00:00 mod_cgid.so 100% 39KB 39.0KB/s 00:00 ...
關于SSH的優化方式
1、Only Use SSH Protocol 2
2、Limit Users' SSH Access
AllowUsers 白名單 (二選一)
DenyUsers 黑名單
3、Configure Idle Log Out Timeout Interval
ClientAliveInterval 300
ClientAliveCountMax 0 設定空閑會話超時時長;
4、Firewall SSH Port #22 使用iptables設置ssh服務安全訪問策略;
5、Change SSH Port and Limit IP Binding
Port 300勿使用默認22端口;
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5
6、Use Strong SSH Passwords and Passphrase 使用足夠長、足夠復雜的密碼,且定期更換
genpasswd() {
local l=$1
[ "$l" == "" ] && l=20
tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs}
7、Use Public Key Based Authentication使用公鑰認證
8、Disable Empty Passwords
9、Thwart SSH Crackers (Brute Force Attack)
google: ssh best practice
10、Rate-limit Incoming Port # 22 Connections 限制ssh訪問頻度;
11、Use Log Analyzer 記錄好日志,經常做日志分析
關于如何進行遠程連接與openssh就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。