天天看點

**OpenSSH應用**

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使用&lt;明文協定&gt;

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 &lt;IFACE&gt; -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 --&gt; ./configure</code>

<code>autoconf --&gt; Makefile.</code><code>in</code>

<code>./configure + Makefile.</code><code>in</code> <code>--&gt; 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 &gt; /etc/profile.d/dropbear.sh &lt;&lt; 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` &amp;&gt; /dev/</code><code>null</code>

<code>reload() {</code>

<code>    </code><code>if</code> <code>[ -r /</code><code>var</code><code>/run/dropbear.pid ] &amp;&amp; [ `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相關配置

配置檔案&lt;讀取配置完成特性設定&gt;

<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 &gt;&gt; ~/.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 &gt;&gt; .ssh/authorized_keys</code>

<code>登陸成功....</code>

<code></code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1967397,如需轉載請自行聯系原作者

繼續閱讀