ssh協定實作相關工具(telnet-server, dropbear(嵌入式), openssh-server)
openssh-clients相關的工具(scp, ssh, dbclient, sftp)
<Windows: xshell, scurecrt, putty,sshsecureshellclient>
openssh-server配置檔案的安全配置
免密碼登陸openssh-server
配置檔案
/etc/ssh/ssh_config
/etc/ssh/sshd_config
SSH(Secure Socket Handler)協定的實作: telnet, dropbear,openssh
sshd使用
1
2
3
4
5
6
7
8
<code>生成主機密鑰</code>
<code># ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N </code><code>''</code>
<code># ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N </code><code>''</code>
<code># ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N </code><code>''</code>
<code># ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N </code><code>''</code>
<code>啟動服務</code>
<code># sshd</code>
telnet使用<明文協定>
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<code>1</code><code>、相關程式</code>
<code>telnet.i686 用戶端 </code>
<code>telnet-server.i686 服務端</code>
<code>The telnet server serves telnet sessions; </code>
<code>it uses unencrypted username/password pairs </code><code>for</code> <code>authentication.</code>
<code>2</code><code>、安裝服務端</code>
<code># yum -y -q install telnet-server</code>
<code>3</code><code>、啟動telnet服務</code>
<code># chkconfig telnet on</code>
<code># service xinetd start</code>
<code>4</code><code>、檢視是否監聽</code>
<code># ss -tunlp | fgrep </code><code>23</code>
<code>5</code><code>、建立普通使用者</code>
<code># openssl passwd -</code><code>1</code> <code>-salt $(openssl rand -hex </code><code>4</code><code>) nuni</code>
<code>$</code><code>1</code><code>$5c636cc0$ADetN0NrDemfAUxtvvSFR1</code>
<code># useradd -p </code><code>'$1$5c636cc0$ADetN0NrDemfAUxtvvSFR1'</code> <code>centos</code>
<code>6</code><code>、在Windows主機上通路(xshell中)</code>
<code>[c:\~]$ telnet</code>
<code>NAME</code>
<code> </code><code>telnet - connects to a host using the TELNET protocol.</code>
<code>SYNOPSYS</code>
<code> </code><code>telnet [user@]host [port]</code>
<code> </code>
<code>[centos@localhost ~]$ pwd</code>
<code>/home/centos</code>
<code>切換root方法:</code>
<code>在root的/etc/sudoer檔案中添加如下行</code>
<code>[root@localhost ~]# visudo </code>
<code>User_Alias ADMINS = centos</code>
<code>Cmnd_Alias SWITCH = /bin/su</code>
<code>ADMINS ALL=(root) SWITCH</code>
<code>切換root</code>
<code>[centos@localhost /]$ sudo su -</code>
<code>7</code><code>、檢視在登陸過程抓包的内容 </code>
<code># tcpdump -i <IFACE> -nn -vv -A</code>
<code>A ASCII</code>
<code>nn 端口為 numeric</code>
<code>vv 詳細</code>
dropbear使用
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<code>1</code><code>、安裝開發包組</code>
<code># yum -y groupinstall </code><code>"Development Tools"</code> <code>"Server Platform Development"</code>
<code># yum install automake autoconf make gcc glibc</code>
<code>automake --> ./configure</code>
<code>autoconf --> Makefile.</code><code>in</code>
<code>./configure + Makefile.</code><code>in</code> <code>--> Makefile</code>
<code>make + Makefile </code>
<code>2</code><code>、擷取源碼 </code>
<code>dropbear-</code><code>2017.75</code><code>.tar.bz2 </code>
<code>3</code><code>、展開</code>
<code># tar xf dropbear-</code><code>2017.75</code><code>.tar.bz2</code>
<code># cd dropbear-</code><code>2017.75</code>
<code>4</code><code>、檢視檔案</code>
<code># less INSTALL</code>
<code>./configure (optionally </code><code>with</code> <code>--disable-zlib or --disable-syslog,</code>
<code> </code><code>or --help </code><code>for</code> <code>other options)</code>
<code>Now compile:</code>
<code>make PROGRAMS=</code><code>"dropbear dbclient dropbearkey dropbearconvert scp"</code>
<code>And install (/usr/local/bin </code><code>is</code> <code>usual </code><code>default</code><code>):</code>
<code>make PROGRAMS=</code><code>"dropbear dbclient dropbearkey dropbearconvert scp"</code> <code>install</code>
<code>5</code><code>、編譯</code>
<code>[root@localhost dropbear-</code><code>2017.75</code><code>]# ./configure --prefix=/usr/local/dropbear</code>
<code>--prefix 友善解除安裝:預設安裝在/usr目錄對應的bin,sbin,lib,share,</code><code>include</code><code>中</code>
<code>checking </code><code>for</code> <code>deflate </code><code>in</code> <code>-lz... no </code><code>//deflate 壓縮過濾器</code>
<code>configure: error: *** zlib missing - install first or check config.log ***</code>
<code># yum install zlib-devel </code>
<code># make PROGRAMS=</code><code>"dropbear dbclient dropbearkey scp"</code>
<code># make PROGRAMS=</code><code>"dropbear dbclient dropbearkey scp"</code> <code>install</code>
<code># ls /usr/local/dropbear/</code>
<code>bin sbin share</code>
<code># cat > /etc/profile.d/dropbear.sh << EOF</code>
<code>export PATH=/usr/local/dropbear/bin:/usr/local/dropbear/sbin:$PATH</code>
<code>EOF</code>
<code># . /etc/profile.d/dropbear.sh</code>
<code>6</code><code>、生成主機密鑰</code>
<code># install -d /etc/dropbear</code>
<code># dropbear -h </code><code>//擷取-r後的檔案路徑 </code>
<code># dropbearkey -h </code><code>//擷取不同類型對應的位元組大小</code>
<code># dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s </code><code>2048</code>
<code># dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key -s </code><code>1024</code>
<code># dropbearkey -t ecdsa -f /etc/dropbear/dropbear_ecdsa_host_key -s </code><code>521</code>
<code>7</code><code>、啟動服務</code>
<code># dropbear -F -E -p </code><code>0.0</code><code>.</code><code>0.0</code><code>:</code><code>9999</code>
<code># killall -</code><code>0</code> <code>dropbear </code><code>//運作中不會傳回任何值</code>
<code># ps axu | grep -v grep | fgrep </code><code>9999</code>
<code>root dropbear -F -E -p </code><code>0.0</code><code>.</code><code>0.0</code><code>:</code><code>9999</code>
<code>以root使用者身份運作</code>
<code>##檢查Pid對就的指令是dropbear</code>
<code># ps -p `cat /</code><code>var</code><code>/run/dropbear.pid` --no-headers -o comm</code>
<code>##檢查端口</code>
<code># ss -tunlp | fgrep </code><code>9999</code>
<code>tcp LISTEN *:</code><code>9999</code> <code>users:((</code><code>"dropbear"</code><code>,</code><code>1389</code><code>,</code><code>3</code><code>))</code>
<code>8</code><code>、測試連接配接</code>
<code>[c:\~]$ ssh</code>
<code> </code><code>ssh - connects to a host using the SSH protocol.</code>
<code> </code><code>ssh [user@]host[ port][;host[ port]]</code>
<code>[c:\~]$ ssh root@</code><code>172.16</code><code>.</code><code>100.1</code> <code>9999</code>
<code> </code><code>172.16</code><code>.</code><code>100.1</code><code>:ssh </code><code>172.16</code><code>.</code><code>0.1</code><code>:</code><code>63058</code> <code>timer:(keepalive,31min,</code><code>0</code><code>)</code>
<code>1</code><code>、啟動背景程序:</code>
<code># dropbear -p </code><code>0.0</code><code>.</code><code>0.0</code><code>:</code><code>8888</code>
<code>2</code><code>、連接配接</code>
<code>[root@localhost ~]# dbclient -p </code><code>9999</code> <code>-l root </code><code>172.16</code><code>.</code><code>100.1</code>
<code>Host </code><code>'172.16.100.1'</code> <code>is</code> <code>not </code><code>in</code> <code>the trusted hosts file.</code>
<code>(ecdsa-sha2-nistp521 fingerprint md5 6f:4a:f9:</code><code>26</code><code>:ef:e7:ed:4b:</code><code>33</code><code>:</code><code>17</code><code>:ce:6b:ef:d8:</code><code>20</code><code>:</code><code>03</code><code>)</code>
<code>Do you want to </code><code>continue</code> <code>connecting? (y/n) y</code>
<code>root@</code><code>172.16</code><code>.</code><code>100.1</code><code>'s password: </code>
<code>[root@localhost ~]# </code>
<code>[root@localhost ~]# pwd</code>
<code>/root</code>
<code>服務腳本dropbear</code>
<code>[root@localhost ~]# vim /etc/rc.d/init.d/dropbear</code>
<code>#!/bin/bash</code>
<code># </code>
<code># dropbear </code><code>is</code> <code>an implementation of SSH(Secure Socket Handler)</code>
<code>#</code>
<code># chkconfig: - </code><code>13</code> <code>87</code>
<code>. /etc/rc.d/init.d/functions</code>
<code>start() {</code>
<code> </code><code>echo -n </code><code>"Start dropbear:"</code>
<code> </code><code>[ -r /etc/dropbear/dropbear_dss_host_key ] || /usr/local/dropbear/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key -s </code><code>1024</code>
<code> </code><code>[ -r /etc/dropbear/dropbear_rsa_host_key ] || /usr/local/dropbear/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s </code><code>2048</code>
<code> </code><code>[ -r /etc/dropbear/dropbear_ecdsa_host_key ] || /usr/local/dropbear/bin/dropbearkey -t ecdsa -f /etc/dropbear/dropbear_ecdsa_host_key -s </code><code>521</code>
<code> </code><code>/usr/local/dropbear/sbin/dropbear -p </code><code>0.0</code><code>.</code><code>0.0</code><code>:</code><code>9999</code>
<code> </code><code>success</code>
<code> </code><code>echo</code>
<code>}</code>
<code>stop() {</code>
<code> </code><code>echo -n </code><code>"Stop dropbear:"</code>
<code> </code><code>kill `pidof -o %PPID dropbear` &> /dev/</code><code>null</code>
<code>reload() {</code>
<code> </code><code>if</code> <code>[ -r /</code><code>var</code><code>/run/dropbear.pid ] && [ `ps -p $(/bin/cat /</code><code>var</code><code>/run/dropbear.pid) --no-headers -o comm` == </code><code>"dropbear"</code> <code>]; then</code>
<code> </code><code>kill -</code><code>1</code> <code>`/bin/cat /</code><code>var</code><code>/run/dropbear.pid`</code>
<code> </code><code>fi</code>
<code>restart() {</code>
<code> </code><code>stop</code>
<code> </code><code>start</code>
<code>status() {</code>
<code> </code><code>echo </code><code>"dropbear is running...."</code>
<code> </code><code>else</code>
<code> </code><code>echo </code><code>"dropbear is stopped yet..."</code>
<code>case</code> <code>$</code><code>1</code> <code>in</code>
<code>start) </code>
<code> </code><code>;;</code>
<code>stop) </code>
<code>restart) </code>
<code> </code><code>restart</code>
<code>status) </code>
<code> </code><code>status</code>
<code>*)</code>
<code> </code><code>echo </code><code>"Usage: dropbear {start|stop|status|restart}"</code>
<code>esac </code>
<code># chmod +x /etc/rc.d/init.d/dropbear</code>
<code># chkconfig --add dropbear</code>
<code># chkconfig --list dropbear</code>
<code>dropbear </code><code>0</code><code>:off </code><code>1</code><code>:off </code><code>2</code><code>:off </code><code>3</code><code>:off </code><code>4</code><code>:off </code><code>5</code><code>:off </code><code>6</code><code>:off</code>
<code># chkconfig --levels </code><code>345</code> <code>dropbear on</code>
<code>dropbear </code><code>0</code><code>:off </code><code>1</code><code>:off </code><code>2</code><code>:off </code><code>3</code><code>:on </code><code>4</code><code>:on </code><code>5</code><code>:on </code><code>6</code><code>:off</code>
OpenSSH(Secure Socket Handler)密鑰認證流程
<a href="https://s1.51cto.com/wyfs02/M02/A5/BA/wKioL1nCWbzhUKMeAAAp40DB9QI070.png" target="_blank"></a>
ssh協定
<a href="https://s5.51cto.com/wyfs02/M02/07/0A/wKiom1nCWlGC4UTVAABJCDlMSIE932.png" target="_blank"></a>
OpenSSH相關的工具
<code># rpm -qi openssh-clients An open source SSH client applications</code>
<code># rpm -qi openssh-server An open source SSH server daemon</code>
<code>[root@localhost ~]# rpm -ql openssh-clients</code>
<code>/etc/ssh/ssh_config</code>
<code>/usr/bin/scp </code><code>//基于ssh協定的複制工具</code>
<code>/usr/bin/sftp </code><code>//基于ssh協定的ftp工具</code>
<code>/usr/bin/ssh </code><code>//基于ssh協定的Linux用戶端指令</code>
<code>/usr/bin/ssh-copy-id</code>
<code>/usr/bin/ssh-keyscan</code>
<code>[root@localhost ~]# rpm -ql openssh-server</code>
<code>/etc/ssh/sshd_config</code>
<code>/usr/sbin/.sshd.hmac</code>
<code>/usr/sbin/sshd</code>
<code>Windows用戶端:</code>
<code>xshell(XFTP), putty(XFTP), securecrt, sshsecureshellclient</code>
openssh-clients相關配置
配置檔案<讀取配置完成特性設定>
<code>Host * </code><code>//Host PATTERN即表示連接配接Host的範圍</code>
<code>Port </code><code>22</code> <code>//預設連接配接端口</code>
<code>ForwardX11 no </code><code>//預設X11協定關閉,要使用遠端的圖形程式必須要開啟,ssh -X即可</code>
ssh指令 以ssh連接配接遠端主機
<a href="https://s1.51cto.com/wyfs02/M02/A5/BB/wKioL1nCY9CDIE3qAABJ-EzgB9Q559.png" target="_blank"></a>
scp指令 跨主機的複制,隻有基于ssh協定工作
sftp指令 安全的ftp工作,隻有基于ssh協定工作
<a href="https://s1.51cto.com/wyfs02/M02/07/0B/wKiom1nCaoaR0zFLAAAJs0TbLZQ755.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M01/07/1B/wKiom1nDaYWBmwY2AABL7e7CQmY233.png" target="_blank"></a>
Openssh-server相關的配置
配置檔案 /etc/ssh/sshd_config
登陸認證
<a href="https://s3.51cto.com/wyfs02/M00/A5/BD/wKioL1nCcXbyudyrAAAwwkEKme8880.png" target="_blank"></a>
必須确定
必須修改
<a href="https://s5.51cto.com/wyfs02/M02/07/0C/wKiom1nCccqhdaJ5AAAzChwefu4270.png" target="_blank"></a>
安全相關的選項
<a href="https://s4.51cto.com/wyfs02/M02/A5/BD/wKioL1nCdvbAbxaZAACIbauiJls538.png" target="_blank"></a>
限制可登陸使用者
<a href="https://s3.51cto.com/wyfs02/M02/07/0D/wKiom1nCd1Pxr8aHAAAKpIQGvic780.png" target="_blank"></a>
使用示例
<code>PasswordAuthentication yes </code><code>//密碼認證</code>
<code>ChallengeResponseAuthentication no </code><code>//挑戰式認證</code>
<code>GSSAPIAuthentication yes </code>
<code>GSSAPICleanupCredentials yes</code>
<code>UsePAM yes</code>
<code>AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES</code>
<code>AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT</code>
<code>AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE</code>
<code>AcceptEnv XMODIFIERS</code>
<code>X11Forwarding yes </code><code>//支援X11</code>
<code>Subsystem sftp /usr/libexec/openssh/sftp-server </code><code>//支援sftp</code>
<code>Protocol </code><code>2</code>
<code>port </code><code>22022</code>
<code>ListenAddress </code><code>192.168</code><code>.</code><code>206.0</code>
<code>UseDNS no</code>
<code>PermitRootLogin yes</code>
<code>MaxSession </code><code>10</code>
<code>MaxAuthTries </code><code>3</code>
<code>LoginGraceTime 10s</code>
<code>ClientAliveInterval 10s</code>
<code>ClientAliveMax </code><code>1</code>
<code>SyslogFacility AUTHPRIV </code>
<code>AllowUsers root</code>
基于密鑰認證登陸openssh-server
生成一對密鑰,公鑰放在伺服器端的對應使用者賬号的對應家目錄下的.ssh目錄中authorized_keys檔案中
<code># openssl genrsa -out scretkey </code><code>768</code>
<code># openssl rsa -</code><code>in</code> <code>scretkey -out pubkey -pubout</code>
<code># cat pubkey >> ~/.ssh/authorized_keys </code>
<code>不能登陸....</code>
<code># ssh-keygen -f ~/.ssh/id_rsa -P </code><code>''</code> <code>-t rsa -b </code><code>768</code>
<code># # cat .ssh/id_rsa.pub >> .ssh/authorized_keys</code>
<code>登陸成功....</code>
<code></code>
本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1967397,如需轉載請自行聯系原作者