作者:@lxchinesszz
本文為作者原創,轉載請注明出處
緊接上文,上文的重點不是連接,而是如何在局域網中用廢棄的電腦搭建,是不是感覺很easy,那么這篇文章我們的重點就放在了安全上了,因為畢竟服務器是我們放應用或者數據庫的地方,安全性一定要可靠。小編是做Java開發的,一只熱愛技術的小菜鳥,因為工作中常常要一條龍服務,即,自己寫需求文檔,自己碼代碼,自己測試,自己部署,自己維護。雖然很累,但是很充實,很能提高自己。我也希望把自己的工作經驗分享出來,對那些想小編一樣熱愛技術的小伙,有所幫助。說半天廢話,下面開始。
-
密鑰登錄原理:
- 密鑰常是一對的,即公鑰和私鑰,將公鑰添加到服務器上的某個賬戶,然后客戶端連接的時候,使用私鑰完成認證就可以登錄
小編我的兩個物理主機一臺虛擬主機和手機都是這樣連接起來的
A.使用私鑰登錄
1.制作密鑰對
- 首先在服務器制作,需要的登錄賬戶,然后執行以下命令
[root@host ~]$ ssh-keygen #建立密鑰對
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): # 輸入密鑰鎖碼,或直接按 Enter 留空
Enter same passphrase again: # 再輸入一遍密鑰鎖碼
Your identification has been saved in /root/.ssh/id_rsa. # 私鑰
Your public key has been saved in /root/.ssh/id_rsa.pub. # 公鑰
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
2.安裝公鑰到服務端
- 講公鑰安裝到服務器
[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys
- 設置權限
[root@host .ssh]$ chmod 600 authorized_keys #不讓其他用戶寫入 600 權限
[root@host .ssh]$ chmod 700 ~/.ssh #讀寫執行的權限 700
-
ssh的配置文件都在
/etc/ssh/
里面[centos@localhost ~]$ cd /etc/ssh/ [centos@localhost ssh]$ ls ssh_config #是客戶單配置的 sshd_config #是服務端配置的
-
在
sshd_config
中配置使用RSA登錄RSAAuthentication yes PubkeyAuthentication yes PermitRootLogin yes # 允許root用戶通過ssh登錄 PasswordAuthentication no #不允許密碼登錄,只用使用私鑰登錄[一般我也用yes]
-
最后服務端重啟 ssh
[root@host .ssh]$ service sshd restart
3.操作客戶端
- 3.1把服務端私鑰復制到客戶端,cat id_rsa,就是一下內容
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,A757691CABE05419
yvEX5nQY3+OeZ56kTt8i41YChrQgL9OwglA3SIU2ymrWvY+5IxXMOQbjJmoSFtRz
Or0lB1eWZx8ZimGdG+y9KoN4AkUzX+HqzaC8/eMczrv2KXP6DpOvV6MTdHoBrTb8
pJOSVzw1K1jmGPaCdWg3XJ7iNSdYr+FVHC6gmJhCCvSHjXLHYBseTSJNXzs4DpQr
rTAnU1NXVt0ce3R7DCO/hGClS5zeQ7j7fpQ48cwBgNJumCcr5eU/TWlUMKm7Q8Za
zLaugTg387qKaieFY6v8CvpqT4Oqt+j1+6B05sr2S4XiiWHdlcieG4fgSRc5I7kp
EhzZWM2LdK6NtxkbWVzd0ZOu5dZDIaMykC2KJJwT+NW3yKZvN1iebm7jzLC3Pv1B
dAqnzxMuwBVNbkvrmVWzi8+OvSfH3ttCoRVnshAAvPylBazAZpWn5k6f0QC8MkUQ
AIEFex80xBPJTT+L6HuijrO2Z1K6qeWe+ptUAqX3FrcuneH1Nn3MnOhNVb4HZvk0
xoy3/+2xe3sYKOUsMqjpWlI3DzGnZ81R8z1sTquRQy3hHDZ8cA6k1wUWoVTpJArb
CLphYurek+YN3kFGLhvKnd6YjnH3d2sq/qSIMp4m3T8iBkex5raf4iNpFwKzb3S9
D6QSWl9Nfnd2tAWkApXU4TPOcbX7XtX1P5yexyNxAZaUHuDsPStO/53WHfu8G2BP
nM2Pefaj1sUcODLK+4JR+edmtA9rjHXVx7Kd3OKRmpocmzYWgEOQJtklr+cL7SJJ
HzoKBjx0NB5/iW23KxSnj7gJhnrDbcD9wY5g63DuMsNnreMfk6trTbXe5ck/mfYN
6bTCXkVczm5Q8BKY0cJF2n/2dJyow9RFJtxDTzm11SvqdXtZoanC5mttePViu3J8
8dbNETFw0DwutyY3KPq3taX40Ps76Ahh6BTb5QD8ctxpYx63MOfQG/BrPFD9M6Al
l5YLzi1In3hc0s6GN2yvx/fdjNZpYFgxA0GH66evtlo3HMr/Id8zgZ+ZSikHMXpv
piXS4uBIgeCZeRaTbq/Bd2V2sN3ENQgV7UTVrnHDc5IWH+qpg8AZxnvmP6BBATNQ
2WAc6I10JqkrtfwjKuSYGyJmg6fY5uSKkZo9JQ1uviWEyhdKDhtYgStxyoIznrbJ
E7PQ3iE3VanB0zmhJHdFJ9xsy5yggMSnRfLCmLsXrczJX0ALwtCDGrrAR3wAg1fn
7WmdUfyfnAugJGOBMx25vOLASL3q5zKoxEr7ayln51uuWRE2oK63low68lcWt42a
S/ozMsev6Wg7QQjg7HRYEavYZGmCv9OBAblOmneUQjajT2F6zY1R4Cajkk3XmBO2
GHXJ685hTiBMQsGf81NMtGd2Zkd5jbcHYhfOe1TKRhgp9cxtzKuyzD2Hj5Bltw8P
q26JVqhLAXZpy73kVsCpU8KplyvZM349kM+VwzOwvvuoWuS+pi9iYYv2f4CjDWZ4
dfzg30+ekEc2QTwsZrYbG8SyIOn4oZSE+ygFNge/o2ftqwpRSwJhV8sUlrhBHQb/
plePpQQfRQlnifiqR/z2JQ4y28purVt5GKPuwsK4SpHCQTpXW3OkdA==
-----END RSA PRIVATE KEY-----
- 把里面的內容復制(這個是我的)自己的文件下
1.你也可以把服務端的id_rsa 下載到你的客戶端,放在當前用戶的.ssh目錄下
2.也可以復制里面的內容然后再.ssh目錄下,重新創建一個id_rsa
vi ~/.ssh/id_rsa # 創建私鑰
4.直接可以登錄了【然后就會發現問題】
? mac@MacBook-Air ~/.ssh ssh centos@192.168.1.112
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/mac/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/mac/.ssh/id_rsa": bad permissions
centos@192.168.1.112's password:
# 遇到這個問題一般就是權限問題 賦權700 ,然后就ok了
mac@MacBook-Air ~/.ssh chmod 700 id_rsa
mac@MacBook-Air ~/.ssh ssh centos@192.168.1.112
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
Last login: Sun Feb 19 12:56:05 2017 from 192.168.1.113
B.設置安全端口
- 默認使用22端口,這個在
etc/ssh/ssh_config
就可以看到
我們可以不使用22端口,此時我們可以在服務器重新創建一個端口,然后使用防火墻屏蔽其他端口
-
開啟端口
-
開啟一個10222端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #寫入修改 /etc/init.d/iptables save #保存修改 service iptables restart #重啟防火墻,修改生效
?
-
-
然后可以查看一下端口狀態
- 查看的時候一定要用root用戶,否則查看不到的,所以我切換了10222 端口連接
- 端口的知識屬于計算機的基礎知識,如果你能看到這里,說明你的基礎已經夠了,不過下面我會專門寫一篇關于底層的計算機的文章。
[centos@localhost ssh]$ su root
密碼:
[root@localhost ssh]# /etc/init.d/iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10222
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10222
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
4 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
- 服務端在/etc/ssh/sshd_config 中監聽10222端口,然后就可以使用
ssh -p 10222 centos@192.168.1.112