天天看點

Ubuntu上搭建ssh伺服器

安裝前的工作(不是必須的)

1.     激活伺服器的網卡,指令:sudo vim /etc/network/interfaces

在 interfaces 中添加以下内容:

auto eth0
iface eth0 inet static
address 202.115.235.181
netmask 255.255.255.0
gateway 202.115.235.1      

其中斜體部分标注的 IP 位址是伺服器的位址,當然如果伺服器使用的是 DHCP 來配置設定 IP 位址,隻需要寫上 iface eth0 inet dhcp 就可以了,無需設定 address/netmask/gateway三項。

2.      配置 DNS 伺服器,就是修改resolv.conf檔案:

sudo vim /etc/resolv.conf

添加 DNS 伺服器的位址:

nameserver 202.113.16.10
nameserver 202.113.16.11      

完成後重新啟動 networking 服務:

sudo /etc/init.d/networking restart

這樣就可以連通網絡了。如果您使用的是 ADSL,可能還需要裝上 pppoe 之類的東西,這裡不詳細講解。

安裝SSH服務端

1.安裝

Ubuntu預設安裝了openssh-client,如果你的系統沒有安裝的話,再用apt-get安裝上即可。

安裝前可以先查找下可用的軟體包 sudo apt-cache search ssh

安裝ssh-server

sudo apt-get install openssh-server

安裝ssh-client

sudo apt-get install openssh-client

2.确認sshserver是否安裝好

ps -e | grep sshd

  1040 ?       00:00:00 sshd

如果看到sshd那說明ssh-server已經啟動了;如果隻有ssh-agent說明ssh-server還沒有啟動,需要執行指令啟動ssh服務:sudo /etc/init.d/ssh start。注:在ubuntu-12.04-server-i386.iso安裝中隻顯示sshd這一項:

3.擴充配置

SSH預設服務端口為22,使用者可以自已定義端口,如9090,需要修改的配置檔案為:

sudo vim /etc/ssh/sshd_config

把裡面的Port參數修改成9090即可

然後重新開機SSH服務: 

sudo /etc/init.d/ssh restart

SSH伺服器的配置檔案詳解:

Ubuntu上搭建ssh伺服器

# 1. 關于 SSH Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式

Port 22          # SSH 預設使用 22 這個 port,您也可以使用多的 port !

              # 亦即重複使用 port 這個設定項目即可!

Protocol 2,1        # 選擇的 SSH 協定版本,可以是 1 也可以是 2 ,

              # 如果要同時支援兩者,就必須要使用 2,1 這個分隔了!

#ListenAddress 0.0.0.0   # 監聽的主機适配卡!舉個例子來說,如果您有兩個 IP,

              # 分别是 192.168.0.100 及 192.168.2.20 ,那麼隻想要

              # 開放 192.168.0.100 時,就可以寫如同下面的樣式:

ListenAddress 192.168.0.100          # 隻監聽來自 192.168.0.100 這個 IP 的SSH聯機。

                   # 如果不使用設定的話,則預設所有接口均接受 SSH

PidFile /var/run/sshd.pid      # 可以放置 SSHD 這個 PID 的檔案!左列為預設值

LoginGraceTime 600     # 當使用者連上 SSH server 之後,會出現輸入密碼的畫面,

              # 在該畫面中,在多久時間内沒有成功連上 SSH server ,

              # 就斷線!時間為秒!

Compression yes      # 是否可以使用壓縮指令?當然可以啰!

 

# 2. 說明主機的 Private Key 放置的檔案,預設使用下面的檔案即可!

HostKey /etc/ssh/ssh_host_key    # SSH version 1 使用的私鑰

HostKey /etc/ssh/ssh_host_rsa_key  # SSH version 2 使用的 RSA 私鑰

HostKey /etc/ssh/ssh_host_dsa_key  # SSH version 2 使用的 DSA 私鑰

# 2.1 關于 version 1 的一些設定!

KeyRegenerationInterval 3600     # 由前面聯機的說明可以知道, version 1 會使用 

                   # server 的 Public Key ,那麼如果這個 Public 

                   # Key 被偷的話,豈不完蛋?是以需要每隔一段時間

                   # 來重建立立一次!這裡的時間為秒!

ServerKeyBits 768           # 沒錯!這個就是 Server key 的長度! # 3. 關于登入檔案的訊息資料放置與 daemon 的名稱!

SyslogFacility AUTH         # 當有人使用 SSH 登入系統的時候,SSH會記錄資

                   # 訊,這個資訊要記錄在什麼 daemon name 底下?

                   # 預設是以 AUTH 來設定的,即是 /var/log/secure

                   # 裡面!什麼?忘記了!回到 Linux 基礎去翻一下

                   # 其它可用的 daemon name 為:DAEMON,USER,AUTH,

                   # LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

LogLevel INFO            # 登入記錄的等級!嘿嘿!任何訊息!

                   # 同樣的,忘記了就回去參考! # 4. 安全設定項目!極重要!

# 4.1 登入設定部分

PermitRootLogin no     # 是否允許 root 登入!預設是允許的,但是建議設定成 no!

UserLogin no        # 在 SSH 底下本來就不接受 login 這個程式的登入!

StrictModes yes      # 當使用者的 host key 改變之後,Server 就不接受聯機,

              # 可以抵擋部分的木馬程式!

#RSAAuthentication yes   # 是否使用純的 RSA 認證!?僅針對 version 1 !

PubkeyAuthentication yes  # 是否允許 Public Key ?當然允許啦!隻有 version 2

AuthorizedKeysFile      .ssh/authorized_keys

              # 上面這個在設定若要使用不需要密碼登入的賬号時,那麼那個

              # 賬号的存放檔案所在檔名!

# 4.2 認證部分

RhostsAuthentication no  # 本機系統不止使用 .rhosts ,因為僅使用 .rhosts 太

              # 不安全了,是以這裡一定要設定為 no !

IgnoreRhosts yes      # 是否取消使用 ~/.ssh/.rhosts 來做為認證!當然是!

RhostsRSAAuthentication no # 這個選項是專門給 version 1 用的,使用 rhosts 檔案在

              # /etc/hosts.equiv配合 RSA 演算方式來進行認證!不要使用

HostbasedAuthentication no # 這個項目與上面的項目類似,不過是給 version 2 使用的!

IgnoreUserKnownHosts no  # 是否忽略家目錄内的 ~/.ssh/known_hosts 這個檔案所記錄

              # 的主機内容?當然不要忽略,是以這裡就是 no 啦!

PasswordAuthentication yes # 密碼驗證當然是需要的!是以這裡寫 yes 啰!

PermitEmptyPasswords no  # 若上面那一項如果設定為 yes 的話,這一項就最好設定

              # 為 no ,這個項目在是否允許以空的密碼登入!當然不許!

ChallengeResponseAuthentication yes  # 挑戰任何的密碼認證!是以,任何 login.conf 

                   # 規定的認證方式,均可适用!

#PAMAuthenticationViaKbdInt yes      # 是否啟用其它的 PAM 子產品!啟用這個子產品将會

                   # 導緻 PasswordAuthentication 設定失效!

 

# 4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos 主機,是以底下不用設定!

#KerberosAuthentication no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

#KerberosTgtPassing no

 

# 4.4 底下是有關在 X-Window 底下使用的相關設定!

X11Forwarding yes

#X11DisplayOffset 10

#X11UseLocalhost yes # 4.5 登入後的項目:

PrintMotd no              # 登入後是否顯示出一些資訊呢?例如上次登入的時間、地點等

             # 等,預設是 yes ,但是,如果為了安全,可以考慮改為 no !

PrintLastLog yes     # 顯示上次登入的資訊!可以啊!預設也是 yes !

KeepAlive yes       # 一般而言,如果設定這項目的話,那麼 SSH Server 會傳送

             # KeepAlive 的訊息給 Client 端,以確定兩者的聯機正常!

             # 在這個情況下,任何一端死掉後, SSH 可以立刻知道!而不會

             # 有僵屍程式的發生!

UsePrivilegeSeparation yes # 使用者的權限設定項目!就設定為 yes 吧!

MaxStartups 10      # 同時允許幾個尚未登入的聯機畫面?當我們連上 SSH ,

             # 但是尚未輸入密碼時,這個時候就是我們所謂的聯機畫面啦!

             # 在這個聯機畫面中,為了保護主機,是以需要設定最大值,

             # 預設最多十個聯機畫面,而已經建立聯機的不計算在這十個當中 # 4.6 關于使用者抵擋的設定項目:

DenyUsers *        # 設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部

             # 擋吧!若是部分使用者,可以将該賬号填入!例如下列!

DenyUsers test

DenyGroups test      # 與 DenyUsers 相同!僅抵擋幾個群組而已! # 5. 關于 SFTP 服務的設定項目!

Subsystem       sftp    /usr/lib/ssh/sftp-server