【linux】之SSH远程管理服务
加密算法
☆ 對(duì)稱加密算法(DES)
☆ 非對(duì)稱加密算法(RSA)
☆ 對(duì)稱加密與非對(duì)稱加密區(qū)別
- 對(duì)稱加密
- 使用同一個(gè)密鑰進(jìn)行加密和解密,密鑰容易泄露
- 加密速度快,效率高,數(shù)據(jù)傳輸速度快,安全性較低
- 非對(duì)稱加密
- 使用不同的密鑰(公鑰和私鑰)進(jìn)行加密和解密
- 加密速度遠(yuǎn)遠(yuǎn)慢于對(duì)稱加密,數(shù)據(jù)傳輸速度慢,安全性較高
SSH基于用戶名密碼的認(rèn)證原理
基本語法:
# ssh [選項(xiàng)] 遠(yuǎn)程服務(wù)器的用戶名@遠(yuǎn)程服務(wù)器的IP地址 選項(xiàng)說明: -p:指定ssh服務(wù)的端口號(hào),默認(rèn)為22案例:通過JumpServer與RealServer遠(yuǎn)程連接,了解SSH基于用戶名密碼的認(rèn)證原理
JumpServer:
# ssh root@10.1.1.38認(rèn)證原理:
SSH服務(wù)搭建
1、所有服務(wù)的搭建思路
- 關(guān)閉防火墻和selinux(實(shí)驗(yàn)環(huán)境都先關(guān)閉掉)
- 配置yum源(公網(wǎng)源或者本地源)
- 軟件安裝和檢查
- 了解并修改配置文件(核心)
- 啟動(dòng)服務(wù)檢查運(yùn)行狀態(tài)并設(shè)置開機(jī)自啟動(dòng)
2、搭建SSH服務(wù)器(JumpServer與RealServer)
第一步:關(guān)閉防火墻與SELinux
# systemctl stop firewalld # systemctl disable firewalld# setenforce 0 # vim /etc/selinux/config SELINUX=disabled第二步:配置YUM源
JumpServer配置外網(wǎng)YUM源 => 阿里云
RealServer配置本地YUM源 => 把光盤鏡像作為倉庫(自建YUM倉庫)
① 掛載光盤
# mkdir /mnt/cdrom # mount -o ro /dev/sr0 /mnt/cdrom# chmod +x /etc/rc.local # echo 'mount -o ro /dev/sr0 /mnt/cdrom' >> /etc/rc.local② 編寫local.repo文件
# cd /etc/yum.repos.d # vim local.repo [local] name=local yum baseurl=file:///mnt/cdrom enabled=1 gpgcheck=03、靜態(tài)IP配置
☆ JumpServer網(wǎng)卡配置
給JumpServer配置兩張網(wǎng)卡(NAT模式 + 僅主機(jī)模式)
添加僅主機(jī)模式網(wǎng)卡:
重啟network網(wǎng)絡(luò),然后使用ifconfig獲取僅主機(jī)模式的網(wǎng)卡信息。
由上圖可知,僅主機(jī)模式的網(wǎng)卡為ens37,NAT模式網(wǎng)卡為ens33。遇到一個(gè)問題,ens37這張網(wǎng)卡沒有配置文件:
添加ens37配置文件:
# cp ifcfg-ens33 ifcfg-ens37 # vim ifcfg-ens37 TYPE="Ethernet" BOOTPROTO="none" IPADDR=11.1.1.10 NETMASK=255.255.255.0 NAME="ens37" DEVICE="ens37" ONBOOT="yes"重啟計(jì)算機(jī)網(wǎng)絡(luò):
# systemctl restart network☆ 關(guān)閉NetworkManager
Linux圖形化界面中的網(wǎng)絡(luò)管理器,有些時(shí)候我們?cè)O(shè)置了靜態(tài)IP。但是重啟網(wǎng)絡(luò)后,其并沒有生效或者和你設(shè)置的IP地址不一致,很可能是由于NetworkManager工具的影響。
# systemctl stop NetworkManager # systemctl disable NetworkManager☆ RealServer網(wǎng)卡配置
把NAT模式的網(wǎng)卡更改為僅主機(jī)模式,然后設(shè)置一個(gè)靜態(tài)IP地址。
由于現(xiàn)在只有一張網(wǎng)卡,所以僅主機(jī)模式對(duì)應(yīng)的網(wǎng)卡為ens33,配置:
設(shè)置完成后,重啟計(jì)算機(jī)網(wǎng)絡(luò)
# systemctl stop NetworkManager # systemctl disable NetworkManager# systemctl restart network4、搭建SSH服務(wù)
關(guān)閉防火墻與SELinux
# 關(guān)閉firewalld防火墻 # 臨時(shí)關(guān)閉 systemctl stop firewalld # 關(guān)閉開機(jī)自啟動(dòng) systemctl disable firewalld# 關(guān)閉selinux # 臨時(shí)關(guān)閉 setenforce 0 # 修改配置文件 永久關(guān)閉 vim /etc/selinux/config SELINUX=disabledopenssh軟件的安裝
SSH服務(wù)底層的軟件名稱叫做openssh,open開源,ssh就是ssh服務(wù)。openssh屬于C/S架構(gòu)軟件,其擁有客戶端與服務(wù)器端。
客戶端:ssh
服務(wù)端:openssh-server
安裝步驟:
# yum install openssh -y檢查openssh是否安裝成功
# rpm -qa |grep openssh 或 # yum list installed |grep openssh獲取openssh生成的文件列表
# rpm -ql openssh-server# 配置文件 /etc/ssh/sshd_config => ssh服務(wù)的主配置文件 /etc/sysconfig/sshd # 服務(wù)管理腳本 /usr/lib/systemd/system/sshd.service => systemctl start sshd # 文件共享服務(wù) 提供文件上傳下載的服務(wù) /usr/libexec/openssh/sftp-server # 二進(jìn)制文件程序文件 /usr/sbin/sshd # 公鑰生成工具 /usr/sbin/sshd-keygen # man手冊(cè) /usr/share/man/man5/sshd_config.5.gz /usr/share/man/man8/sftp-server.8.gz /usr/share/man/man8/sshd.8.gz # rpm -ql openssh-clients# 客戶端配置文件 /etc/ssh/ssh_config # 遠(yuǎn)程copy命令 服務(wù)器間進(jìn)行文件傳輸 /usr/bin/scp # sftp客戶端 上傳下載文件操作 /usr/bin/sftp /usr/bin/slogin /usr/bin/ssh /usr/bin/ssh-add /usr/bin/ssh-agent /usr/bin/ssh-copy-id /usr/bin/ssh-keyscan # 客戶端man手冊(cè) /usr/share/man/man1/scp.1.gz /usr/share/man/man1/sftp.1.gz /usr/share/man/man1/slogin.1.gz /usr/share/man/man1/ssh-add.1.gz /usr/share/man/man1/ssh-agent.1.gz /usr/share/man/man1/ssh-copy-id.1.gz /usr/share/man/man1/ssh-keyscan.1.gz /usr/share/man/man1/ssh.1.gz /usr/share/man/man5/ssh_config.5.gz /usr/share/man/man8/ssh-pkcs11-helper.8.gz查看并修改ssh服務(wù)端的配置文件
# man 5 sshd_configRealServer:禁止root賬號(hào)遠(yuǎn)程登錄
# man 5 sshd_config PermitRootLogin => yes or no,默認(rèn)為yes 代表允許通過root賬號(hào)遠(yuǎn)程登錄此服務(wù)器 # vim /etc/ssh/sshd_config 38行 PermitRootLogin nosshd服務(wù)管理
# systemctl restart sshd => 重啟 # systemctl status sshd => 狀態(tài) # systemctl stop sshd => 停止 # systemctl start sshd => 啟動(dòng)# systemctl enable sshd => 開機(jī)自啟動(dòng) # systemctl disable sshd => 開機(jī)不自啟# ps -ef |grep sshd => 進(jìn)程 或 # netstat -tnlp |grep sshd => 端口 或 # ss -naltp |grep sshdSSH服務(wù)任務(wù)解決方案
1、創(chuàng)建用戶并授權(quán)
JumpServer跳板機(jī)創(chuàng)建用戶并授權(quán)
第一步:創(chuàng)建用戶與用戶組(html前端組,tom與jerry)
# 創(chuàng)建html前端組 # groupadd html# 創(chuàng)建組內(nèi)用戶tom與jerry # useradd -g html tom # useradd -g html jerry第二步:為用戶添加密碼
# echo 123456 |passwd --stdin tom # echo 123456 |passwd --stdin jerry第三步:為開發(fā)人員創(chuàng)建數(shù)據(jù)目錄并且設(shè)置相應(yīng)的權(quán)限
① 創(chuàng)建用戶的數(shù)據(jù)目錄:
# mkdir -p /code/html => 前端組 # ll -d /code/html drwxr-xr-x. 2 root root 6 May 24 10:36 /code/html② 更改目錄的文件所屬組(更改為html,代表html組內(nèi)成員可以對(duì)這個(gè)目錄進(jìn)行管理)
# chgrp -R html /code/html drwxr-xr-x. 2 root html 6 May 24 10:36 /code/html # chmod -R g+w /code/html drwxrwxr-x. 2 root html 6 May 24 10:36 /code/html③ 添加粘滯位權(quán)限,防止誤刪除操作
# chmod 1770 /code/html drwxrwx--T. 2 root html 6 May 24 10:36 /code/html2、測(cè)試用戶權(quán)限
測(cè)試用戶權(quán)限是否設(shè)置成功,可以結(jié)合第1步一起完成
3、禁用root登錄
RealServer服務(wù)器端:
# vim /etc/ssh/sshd_config PermitRootLogin no4、更改SSH默認(rèn)端口
RealServer服務(wù)器端:
# vim /etc/ssh/sshd_config 17行 Port 37125、重啟SSH服務(wù)
# systemctl restart sshd 或 # systemctl reload sshdrestart與reload的本質(zhì)區(qū)別:
① restart其實(shí)相當(dāng)于stop然后在start
② reload不停止現(xiàn)有業(yè)務(wù),只是重新加載sshd對(duì)應(yīng)的配置文件
6、在RealServer創(chuàng)建一個(gè)code賬號(hào)
# useradd code # echo 123456 |passwd --stdin code測(cè)試:在JumpServer遠(yuǎn)程連接RealServer
# ssh -p 3721 code@11.1.1.1007、SSH客戶端不驗(yàn)證指紋
第一次連接遠(yuǎn)程服務(wù)器時(shí):
The authenticity of host '11.1.1.100 (11.1.1.100)' can't be established. ECDSA key fingerprint is SHA256:Y/cQNWWkX15o2MsJ5HOQBI2m8S33qIA+x3zys8J4pOY. ECDSA key fingerprint is MD5:76:61:86:8b:d5:ee:bf:9c:60:e6:12:fa:f6:f0:74:36. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added '11.1.1.100' (ECDSA) to the list of known hosts.如果我們不想驗(yàn)證指紋,可以通過更改SSH客戶端的配置文件
JumpServer:
# vim /etc/ssh/ssh_config 35行 StrictHostKeyChecking no8、用專業(yè)工具pwgen生成用戶密碼
在實(shí)際生產(chǎn)環(huán)境中,其用戶密碼一定不要手工設(shè)置,建議使用專業(yè)的密碼生成工具如pwgen。
① 安裝隨機(jī)密碼生成工具pwgen
② 使用pwgen工具生成隨機(jī)密碼
③ 給賬號(hào)code設(shè)置密碼
第一步:創(chuàng)建code開發(fā)者賬號(hào)
# useradd code第二步:配置EPEL源,安裝pwgen工具
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # yum clean all # yum makecache第三步:安裝pwgen密碼生成工具
# yum install pwgen -y第四步:使用pwgen生成隨機(jī)密碼
# pwgen -cnBs1 10 1擴(kuò)展:pwgen密碼生成器的使用
# pwgen --help # 用法: pwgen 選項(xiàng)參數(shù) 長(zhǎng)度 生成個(gè)數(shù) Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]# 密碼中至少包含一個(gè)大寫字母 -c or –capitalize# 密碼中不包含大寫字母 -A or –no-capitalize# 密碼中至少包含一個(gè)數(shù)字 -n or –numerals# 密碼中不包含數(shù)字 -0 or –no-numerals# 密碼中至少包含一個(gè)特殊符號(hào) -y or –symbols# 生成完全隨機(jī)密碼 -s or –secure# 密碼中不包含歧義字符(例如1,l,O,0) -B or –ambiguous# 使用SHA1 hash給定的文件作為一個(gè)隨機(jī)種子 -H or –sha1=path/to/file[#seed]# 在列中打印生成的密碼 -C# 不要在列中打印生成的密碼,即一行一個(gè)密碼 -1# 不要使用任何元音,以避免偶然的臟話 -v or –no-vowelsSSH服務(wù)補(bǔ)充
1、scp命令
主要功能:用于Linux系統(tǒng)與Linux系統(tǒng)之間進(jìn)行文件的傳輸(上傳、下載)
上傳:
# scp [選項(xiàng)] 本地文件路徑 遠(yuǎn)程用戶名@遠(yuǎn)程服務(wù)器的IP地址:遠(yuǎn)程文件存儲(chǔ)路徑 -r : 遞歸上傳,主要針對(duì)文件夾 -P : 更換了SSH服務(wù)的默認(rèn)端口必須使用-P選項(xiàng)下載:
# scp [選項(xiàng)] 遠(yuǎn)程用戶名@遠(yuǎn)程服務(wù)器的IP地址:遠(yuǎn)程文件路徑 本地文件存儲(chǔ)路徑 -r : 遞歸上傳,主要針對(duì)文件夾 -P : 更換了SSH服務(wù)的默認(rèn)端口必須使用-P選項(xiàng)2、踢出用戶
# 查看當(dāng)前在線用戶 w # 踢出某個(gè)賬號(hào) pkill -kill -t pts/1四、SSH免密登錄解決方案
SSH免密登錄的具體實(shí)現(xiàn)
SSH免密的實(shí)現(xiàn)思路一共分為三個(gè)步驟(三步走)
第一步:在A主機(jī)針對(duì)某個(gè)賬號(hào)(tom或jerry)生成公鑰與私鑰
第二步:使用某些方法把公鑰發(fā)送到B主機(jī)中,然后追加到authorized_keys文件中
第三步:測(cè)試是否實(shí)現(xiàn)免密登錄
☆ 方法一:比較常用(tom)
① 在A主機(jī)針對(duì)某個(gè)賬號(hào)生成公鑰與私鑰
# ssh-keygen注:如果不想一路確認(rèn),可以在ssh-keygen -P “”,直接生成公私鑰
② 使用ssh-copy-id把公鑰文件中的內(nèi)容傳輸?shù)椒?wù)器端的~/.ssh/authorized_keys文件中
# ssh-copy-id -p 3712 code@11.1.1.100 code@11.1.1.100's password:123456③ 在JumpServer客戶端測(cè)試免密登錄是否成功
# ssh -p 3721 code@11.1.1.100☆ 方法二:集群常用(jerry)
① 生成公鑰與私鑰
# ssh-keygen② 把id_rsa.pub文件,scp到RealServer服務(wù)器端
# scp -P 3721 ~/.ssh/id_rsa.pub code@11.1.1.100:/home/code/③ 在RealServer服務(wù)器端,把id_rsa.pub文件中的內(nèi)容追加到~/.ssh/authorized_keys文件中
# cd ~ # cat id_rsa.pub >> ~/.ssh/authorized_keys注意事項(xiàng):以上配置也比較簡(jiǎn)單,但是實(shí)際應(yīng)用時(shí)要注意文件的權(quán)限
RealServer: ~/.ssh : 700 ~/.ssh/authorized_keys : 600④ 測(cè)試免密是否成功
ssh -p 3721 code.1.1.100總結(jié)
以上是生活随笔為你收集整理的【linux】之SSH远程管理服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sysaux表空间清理
- 下一篇: 【无标题】奥的斯电梯故障代码 逻辑思