日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系列教程(13)- 使用 ssh 服务管理远程主机

發布時間:2024/3/24 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系列教程(13)- 使用 ssh 服务管理远程主机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 ssh 服務管理遠程主機

配置 sshd 服務

SSH(Secure Shell)是一種能夠以安全的方式提供遠程登錄的協議,也是目前遠程管理
Linux 系統的首選方式。在此之前,一般使用 FTP 或 Telnet 來進行遠程登錄。但是因為它們
以明文的形式在網絡中傳輸賬戶密碼和數據信息,因此很不安全。

想要使用 SSH 協議來遠程管理 Linux 系統,則需要部署配置 sshd 服務程序。sshd 是基于 SSH
協議開發的一款遠程管理服務程序,不僅使用起來方便快捷,而且能夠提供兩種安全驗證的方法:
? 基于口令的驗證 — 用賬戶和密碼來驗證登錄;

? 基于密鑰的驗證 — 需要在本地生成密鑰對,然后把密鑰對中的公鑰上傳至服務器,
并與服務器中的公鑰進行比較;該方式相較來說更安全。

配置

Port 22 默認的 sshd 服務端口
ListenAddress 0.0.0.0 設定 sshd 服務器監聽的 IP 地址
Protocol 2 SSH 協議的版本號
HostKey /etc/ssh/ssh_host_key SSH 協議版本為 1 時,DES 私鑰存放的位置
HostKey /etc/ssh/ssh_host_rsa_key SSH 協議版本為 2 時,RSA 私鑰存放的位置
HostKey /etc/ssh/ssh_host_dsa_key SSH 協議版本為 2 時,DSA 私鑰存放的位置
PermitRootLogin yes 設定是否允許 root 管理員直接登錄
StrictModes yes 當遠程用戶的私鑰改變時直接拒絕連接
MaxAuthTries 6 最大密碼嘗試次數
MaxSessions 10 最大終端數
PasswordAuthentication yes 是否允許密碼驗證
PermitEmptyPasswords no 是否允許空密碼登錄(很不安全)

sshd 服務的配置信息保存在/etc/ssh/sshd_config 文件中。

# cat /etc/ssh/sshd_config

密碼登錄

在 RHEL 7 系統中,已經默認安裝并啟用了 sshd 服務程序。接下來使用 ssh 命令進行遠
程連接,其格式為“ssh [參數] 主機 IP 地址”。要退出登錄則執行 exit 命令。

[root@linuxprobe ~]# ssh 192.168.10.10 root@192.168.10.20's password: [root@linuxprobe ~]# exit

命令

狀態 # systemctl status sshd 重啟 # systemctl restart sshd 開機啟動 # systemctl enable sshd

公鑰密鑰登錄

可以實現免輸入密碼進行登錄。

在客戶端主機中生成“密鑰對”,在.ssh目錄。

# ssh-keygen 一直回車

把客戶端主機中生成的公鑰文件傳送至遠程主機。

ssh-copy-id -p port user@remotr

# ssh-copy-id 192.168.10.10 Are you sure you want to continue connecting (yes/no)? yes root@192.168.10.10's password:輸入遠程服務器密碼

在客戶端嘗試登錄到服務器,此時無須輸入密碼也可成功登錄。

遠程傳輸命令

scp(secure copy)是一個基于 SSH 協議在網絡之間進行安全傳輸的命令,其格式為“scp
[參數] 本地文件 遠程帳戶@遠程 IP 地址:遠程目錄”。

由于 scp 命令是基于 SSH 協議進行文件傳送的,上節又設置好了密鑰驗證,因
此當前在傳輸文件時,并不需要賬戶和密碼。

[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt [root@linuxprobe ~]# scp /root/readme.txt 192.168.10.20:/home 輸入遠程root管理員密碼

此外,還可以使用 scp 命令把遠程主機上的文件下載到本地主機,其命令格式為“scp [參
數] 遠程用戶@遠程 IP 地址:遠程文件 本地目錄”。例如,可以把遠程主機的系統版本信息文
件下載過來,這樣就無須先登錄遠程主機,再進行文件傳送了,也就省去了很多周折。

[root@linuxprobe ~]# scp 192.168.10.20:/etc/redhat-release /root root@192.168.10.20's password: root redhat-release 100% 52 0.1KB/s 00:00 [root@linuxprobe ~]# cat redhat-release

遠程登錄客戶端

Linux 系統中是通過 ssh 服務實現的遠程登錄功能,默認 ssh 服務端口號為 22。

Window 系統上 Linux 遠程登錄客戶端有Xshell ,SecureCRT, Putty, SSH Secure Shell 等

xshell上使用公鑰登陸Linux服務器

1.設置連接

設置協議=SSH、IP、端口

2.設置用戶身份驗證

方法=public key 用戶名=root

3.生成公鑰

點擊瀏覽生成,一直下一步,輸入密碼123456

最后保存成文件如:id_rsa_2048.pub,然后填寫生成公鑰過程中輸入的密碼 ,文件內容如下

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAn6gjMhvBsm5lghzmWNlQlrL0DByMtslErHbzrmp4l8qCdOgRMhJH8zI3IoBPqnFv+9Vf5+qGlMdG+DfW17HEiz8tnqvhjdjviGK0ZVBANNIjVaTst5GsMVfOdR9pBdudMQa6bffV6wV7UiJ0XLQYD3GSEjBDH+ZTt7cU/zTV5ph8n4evaK301IwGcBU90pQmoMSmkYqu+wnkS8OApyX9OEsoTe4H7l8EImVdzw5nCrnSKBgPMd1JGqo1wpBrK+3ZwdDhc/Q/TNX1TpNd/nbB2JJGdOzBdugVZyW/8hoVAaWt6uVRStq4jWoSRUagmuA1Anrs2lPyIQVEmX/GxUZ9GQ==

4.上傳公鑰文件到linux服務器的~/.ssh/目錄

5.執行命令cat id_rsa_2048.pub >> authorized_keys,如果沒有authorized_keys,則自己創建一個

6.修改權限chmod 600 authorized_keys

7.打開之前設置的連接就可以使用公鑰連上服務器了

sftp 服務程序

sftp采用的是ssh加密隧道,安全性方面比ftp強,而且依賴的是系統自帶的ssh服務,不像ftp還需要額外的進行安裝,默認已經安裝,可以

# ssh -V # sftp 127.0.0.1 Connected to 127.0.0.1. sftp> ls

眾所周知sftp賬號是基于ssh賬號的,所以在默認情況下訪問服務器的權限是非常大的,進行sftp用戶權限設置

你的openssh-server版本至少得失4.8p1。

1、創建sftp用戶組

groupadd sftp

2、創建ftp用戶

useradd -g sftp -s /sbin/nologin -M sftpuser passwd sftpuser

3、創建家目錄并指定權限

注釋:給家目錄更改屬主并授權家目錄屬主必須是root,權限可以是755或者750

mkdir -p /opt/data usermod -d /opt/data sftpuserchown root:root /opt/data chmod 755 /opt/data

4、創建可寫目錄

mkdir /opt/data/file -p chown sftpuser:sftp /opt/data/file

5、編輯配置文件/etc/ssh/sshd_config

注釋掉X11Forwarding yes 這句話,大概在101行 注釋掉Subsystem sftp /usr/libexec/openssh/sftp-server 這句話,大概在132行并在文件末尾添加如下語句: Subsystem sftp internal-sftp Match User sftpuser ChrootDirectory /opt/data ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no# systemctl restart sshd

6、驗證

# sftp sftpuser@127.0.0.1

注釋:文件只能刪除至/opt/data/file目錄下,可以上傳和刪除。默認端口22

使用 vsftpd 服務傳輸文件

文件傳輸協議

今天的互聯網是由幾千萬臺個人計算機、工作站、服務器、小型機、大型
機、巨型機等具有不同型號、不同架構的物理設備共同組成的,而且即便是個人計算機,也
可能會裝有 Windows、Linux、UNIX、Mac 等不同的操作系統。為了能夠在如此復雜多樣的
設備之間解決問題解決文件傳輸問題,文件傳輸協議(FTP)應運而生。

FTP 是一種在互聯網中進行文件傳輸的協議,基于客戶端/服務器模式,默認使用 20、21
號端口,其中端口 20(數據端口)用于進行數據傳輸,端口 21(命令端口)用于接受客戶端
發出的相關 FTP 命令與參數。

FTP 協議有下面兩種工作模式。
? 主動模式:FTP 服務器主動向客戶端發起連接請求。
? 被動模式:FTP 服務器等待客戶端發起連接請求(FTP 的默認工作模式)。

防火墻一般是用于過濾從外網進入內網的流量,因此有些時候需要將 FTP 的工作模式設置為

主動模式,才可以傳輸數據。

vsftpd(very secure ftp daemon,非常安全的 FTP 守護進程)是一款運行在 Linux 操作系
統上的 FTP 服務程序,不僅完全開源而且免費,此外,還具有很高的安全性、傳輸速度,以
及支持虛擬用戶驗證等其他 FTP 服務程序不具備的特點。

# yum install vsftpd

vsftpd 服務程序的主配置文件(/etc/vsftpd/vsftpd.conf)

[root@linuxprobe ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak [root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf [root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.confdirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES

配置參數說明:

listen=[YES|NO] 是否以獨立運行的方式監聽服務 listen_address=IP 地址 設置要監聽的 IP 地址 listen_port=21 設置 FTP 服務的監聽端口 download_enable=[YES|NO] 是否允許下載文件 userlist_enable=[YES|NO] userlist_deny=[YES|NO] 設置用戶列表為“允許”還是“禁止”操作 max_clients=0 最大客戶端連接數,0 為不限制 max_per_ip=0 同一 IP 地址的最大連接數,0 為不限制 anonymous_enable=[YES|NO] 是否允許匿名用戶訪問 anon_upload_enable=[YES|NO] 是否允許匿名用戶上傳文件 anon_umask=022 匿名用戶上傳文件的 umask 值 anon_root=/var/ftp 匿名用戶的 FTP 根目錄 anon_mkdir_write_enable=[YES|NO] 是否允許匿名用戶創建目錄 anon_other_write_enable=[YES|NO] 是否開放匿名用戶的其他寫入權限(包括重命名、刪 除等操作權限) anon_max_rate=0 匿名用戶的最大傳輸速率(字節/秒),0 為不限制 local_enable=[YES|NO] 是否允許本地用戶登錄 FTP local_umask=022 本地用戶上傳文件的 umask 值 local_root=/var/ftp 本地用戶的 FTP 根目錄 chroot_local_user=[YES|NO] 是否將用戶權限禁錮在 FTP 目錄,以確保安全 local_max_rate=0 本地用戶最大傳輸速率(字節/秒),0 為不限制

vsftpd 服務程序

vsftpd 作為更加安全的文件傳輸的服務程序,允許用戶以三種認證模式登錄到 FTP 服務
器上。
? 匿名開發模式 :是一種最不安全的認證模式,任何人都可以無需密碼驗證而直接登錄
到 FTP 服務器。
?本地用戶模式 :是通過 Linux 系統本地的賬戶密碼信息進行認證的模式,相較于匿名
開放模式更安全,而且配置起來也很簡單。但是如果被黑客破解了賬戶的信息,就可
以暢通無阻地登錄 FTP 服務器,從而完全控制整臺服務器。
? 虛擬用戶模式:是這三種模式中最安全的一種認證模式,它需要為 FTP 服務單獨
建立用戶數據庫文件,虛擬出用來進行口令驗證的賬戶信息,而這些賬戶信息在
服務器系統中實際上是不存在的,僅供 FTP 服務程序進行認證使用。這樣,即使
黑客破解了賬戶信息也無法登錄服務器,從而有效降低了破壞范圍和影響。
ftp 是 Linux 系統中以命令行界面的方式來管理 FTP 傳輸服務的客戶端工具。

# yum install vsftpd # systemctl restart vsftpd.service # 重啟服務 # systemctl start vsftpd.service # 啟動服務 # systemctl status vsftpd.service # 服務狀態查看

匿名開放模式

無需密碼驗證而直接登錄到 FTP 服務器。這種模式一般用來訪問不重要的公開文件。

vsftpd 服務程序默認開啟了匿名開放模式,我們需要做的就是開放匿名用戶的上傳、下
載文件的權限,以及讓匿名用戶創建、刪除、更名文件的權限。添加配置

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES ...... [root@linuxprobe ~]# systemctl restart vsftpd [root@linuxprobe ~]# systemctl enable vsftpd

現在就可以在客戶端執行 ftp 命令連接到遠程的 FTP 服務器了。在 vsftpd 服務程序的匿
名開放認證模式下,其賬戶統一為 anonymous,密碼為空。而且在連接到 FTP 服務器后,默
認訪問的是/var/ftp 目錄。我們可以切換到該目錄下的 pub 目錄中,然后嘗試創建一個新的目
錄文件,以檢驗是否擁有寫入權限

[root@linuxprobe ~]# ftp 192.168.10.10 ftp> cd pub 250 Directory successfully changed. ftp> mkdir files 550 Permission denied.

下面將目錄的所有者身份改成系統賬戶 ftp 即可

[root@linuxprobe ~]# ls -ld /var/ftp/pub drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub [root@linuxprobe ~]# chown -Rf ftp /var/ftp/pub [root@linuxprobe ~]# ls -ld /var/ftp/pub drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub

本地用戶模式

相較于匿名開放模式,本地用戶模式要更安全,而且配置起來也很簡單。

anonymous_enable=NO 禁止匿名訪問模式
local_enable=YES 允許本地用戶模式
write_enable=YES 設置可寫權限
local_umask=022 本地用戶模式創建文件的 umask 值
userlist_enable=YES 啟用“禁止用戶名單”,名單文件為 ftpusers 和 user_list
userlist_deny=YES 開啟用戶作用名單文件功能

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 [root@linuxprobe ~]# systemctl restart vsftpd [root@linuxprobe ~]# systemctl enable vsftpd

vsftpd 服務程序所在的目錄中默認存放著兩個名為“用戶名單”的文件(ftpusers 和 user_list)。

在采用本地用戶模式登錄 FTP 服務器后,默認訪問的是該用戶的家目錄。而且該目錄的默認所有者、所屬組都是該用戶自己,因此不存在寫入權限不足的情況。可以采用如下屬性修改默認更目錄。

local_root=/var/ftp 本地用戶的 FTP 根目錄

虛擬用戶模式

虛擬用戶模式是這三種模式中最安全的一種認證模式

數據庫文件創建

創建用于進行 FTP 認證的用戶數據庫文件,其中奇數行為賬戶名,偶數行為密
碼。例如,我們分別創建出 ftpuser1和 ftpuser2兩個用戶,密碼均為 ftpuser2

# cd /etc/vsftpd/ # vi vuser.list ftpuser1 ftpuser2 ftpuser2 ftpuser2

但是,明文信息既不安全,也不符合讓 vsftpd 服務程序直接加載的格式,因此需要使
用 db_load 命令用哈希(hash)算法將原始的明文信息文件轉換成數據庫文件,并且降低
數據庫文件的權限(避免其他人看到數據庫文件的內容),然后再把原始的明文信息文件
刪除。

# db_load -T -t hash -f vuser.list vuser.db # file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order) # chmod 600 vuser.db # rm -f vuser.list
建立linux用戶

創建 vsftpd 服務程序用于存儲文件的根目錄以及虛擬用戶映射的系統本地
用戶。FTP 服務用于存儲文件的根目錄指的是,當虛擬用戶登錄后所訪問的默認位置。

由于 Linux 系統中的每一個文件都有所有者、所屬組屬性,例如使用虛擬賬戶“張三”
新建了一個文件,但是系統中找不到賬戶“張三”,就會導致這個文件的權限出現錯誤。為此,
需要再創建一個可以映射到虛擬用戶的系統本地用戶。簡單來說,就是讓虛擬用戶默認登錄
到與之有映射關系的這個系統本地用戶的家目錄中,虛擬用戶創建的文件的屬性也都歸屬于
這個系統本地用戶,從而避免 Linux 系統無法處理虛擬用戶所創建文件的屬性權限。

為了方便管理 FTP 服務器上的數據,可以把這個系統本地用戶的家目錄設置為/var 目錄
(該目錄用來存放經常發生改變的數據)。并且為了安全起見,我們將這個系統本地用戶設置
為不允許登錄 FTP 服務器,這不會影響虛擬用戶登錄,而且還可以避免黑客通過這個系統本
地用戶進行登錄。

# useradd -d /var/ftproot -s /sbin/nologin virtual # ls -ld /var/ftproot/ drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/ # chmod -Rf 755 /var/ftproot/
建立用于支持虛擬用戶的 PAM 文件。

PAM(可插拔認證模塊)是一種認證機制,通過一些動態鏈接庫和統一的 API 把系統提
供的服務與認證方式分開,使得系統管理員可以根據需求靈活調整服務程序的不同認證方式。

通俗來講,PAM 是一組安全機制的模塊,系統管理員可以用來輕易地調整服務程序的認
證方式,而不必對應用程序進行任何修改。PAM 采取了分層設計(應用程序層、應用接口層、
鑒別模塊層)的思想。

新建一個用于虛擬用戶認證的 PAM 文件 vsftpd.vu,其中 PAM 文件內的“db=”參數為
使用 db_load 命令生成的賬戶密碼數據庫文件的路徑,但不用寫數據庫文件的后綴:

# vi /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
配置PAM認證

在 vsftpd 服務程序的主配置文件中通過 pam_service_name 參數將 PAM 認證
文件的名稱修改為 vsftpd.vu,PAM 作為應用程序層與鑒別模塊層的連接紐帶,可以讓應用程
序根據需求靈活地在自身插入所需的鑒別功能模塊。當應用程序需要 PAM 認證時,則需要在
應用程序中定義負責認證的 PAM 配置文件,實現所需的認證功能。
例如,在 vsftpd 服務程序的主配置文件中默認就帶有參數 pam_service_name=vsftpd,表
示登錄 FTP 服務器時是根據/etc/pam.d/vsftpd 文件進行安全認證的。現在我們要做的就是把
vsftpd 主配置文件中原有的 PAM 認證文件 vsftpd 修改為新建的 vsftpd.vu 文件即可。該操作中
用到的參數以及作用如表 11-4 所示。

anonymous_enable=NO 禁止匿名開放模式
local_enable=YES 允許本地用戶模式

guest_enable=YES 開啟虛擬用戶模式
guest_username=virtual 指定虛擬用戶賬戶
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES允許對禁錮的FTP 根目錄執行寫入操作,而且不拒絕用戶的登錄請求

[root@linuxprobe ~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=virtual allow_writeable_chroot=YES pam_service_name=vsftpd.vu
為虛擬用戶設置不同的權限

為虛擬用戶設置不同的權限。雖然賬戶 ftpuser1和 ftpuser1 都是用于 vsftpd 服務程
序認證的虛擬賬戶,但是我們依然想對這兩人進行區別對待。比如,允許ftpuser1上傳、創建、修
改、查看、刪除文件,只允許ftpuser2查看文件。這可以通過 vsftpd 服務程序來實現。只需新建
一個目錄,在里面分別創建兩個以 ftpuser1和 ftpuser2命名的文件,其中在名為 ftpuser1的文件
中寫入允許的相關權限(使用匿名用戶的參數):

# mkdir /etc/vsftpd/vusers_dir/ # cd /etc/vsftpd/vusers_dir/ # touch ftpuser1 # vi ftpuser1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

也可以分別設置需求用戶登錄后看到不同的目錄,要設置權限

# cd /etc/vsftpd/vusers_dir/ # vi ftpuser1 local_root=/var/ftproot/ftpuser1# mkdir -p /var/ftproot/ftpuser1/ # chown -R virtual:virtual /var/ftproot/ftpuser1/

然后再次修改 vsftpd 主配置文件,通過添加 user_config_dir 參數來定義這兩個虛擬用戶
不同權限的配置文件所存放的路徑。

# vi /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_dir # systemctl restart vsftpd # systemctl enable vsftpd
測試
[root@linuxprobe ~]# ftp 192.168.10.10 ftpuser1/ftpuser2 ftp> mkdir files 257 "/files" created ftp> rename files database 350 Ready for RNTO. 250 Rename successful. ftp> rmdir database 250 Remove directory operation successful. ftp> exit 221 Goodbye.

附錄:vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES listen=YES pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES dual_log_enable=YES vsftpd_log_file=/var/log/vsftpd.log guest_enable=YES guest_username=virtual allow_writeable_chroot=YES user_config_dir=/etc/vsftpd/vusers_dir

總結

以上是生活随笔為你收集整理的Linux系列教程(13)- 使用 ssh 服务管理远程主机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。