文章目錄
- 環境
- 準備作業
- Linux
- 1、Linux關閉防火墻
- 2、臨時關閉SELinux
- Windows
- 1、關閉Windows防火墻
- 2、啟用Windows的Telnet Client和TFTP Client功能
- 3、解決cmd下中文亂碼問題
- 實驗要求步驟和實驗命令
- 提醒:做完實驗別忘了重新啟動Windows防火墻,
- 其他
環境
Windows10,15.0.0版本的VMware,CentOS 8,
準備作業
Linux
1、Linux關閉防火墻
# telnet默認埠23
firewall-cmd --zone=public --add-port=23/tcp --permanent
# vsftpd默認埠21
,,,
因為要放行的埠很多,所以直接關閉防火墻,
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
2、臨時關閉SELinux
# 臨時關閉SELinux,重啟機器后恢復原狀態:
[root@localhost ~]# setenforce 0
Linux怎么關閉SELinux-百度經驗
Windows
1、關閉Windows防火墻


想嘗試一個個開啟Windows防火墻埠的,可以看看這里:Windows/Windows server下開放防火墻埠_JaneYork的博客-CSDN博客
2、啟用Windows的Telnet Client和TFTP Client功能

3、解決cmd下中文亂碼問題
防止后面在第8步:“在window命令列下,使用 a+學號 帳號 telnet 登錄linux”,在用cmd輸入命令時,會發生看不懂程式給的反饋的情況,比如:
[sudo] a201814090518 的密碼:
會變成
[sudo] a201814090518 鐨勫瘑鐮侊細
一次永久解決cmd視窗漢字顯示亂碼_不凡乃大的博客-CSDN博客_cmd視窗中文亂碼
解決cmd視窗中文亂碼問題,由上文總結如下:
1、win+R 輸入regedit 進入注冊表
2、

3、 重啟cmd后生效
MS-DOS為以下國家和語言提供字符集:936 簡體中文(默認) ,65001 UTF-8,
實驗要求步驟和實驗命令
-
利用SSH客戶端遠程登錄root用戶;
-
參考ppt內容,安裝并啟動telnet服務(xinetd模式);
[root@localhost ~]# yum install -y xinetd
[root@localhost ~]# yum install -y telnet
[root@localhost ~]# yum install -y telnet-server
[root@localhost ~]# vim /etc/xinetd.d/telnet # 下方內容復制到/etc/xinetd.d/telnet
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server =/usr/sbin/in.telnetd
log_on_failure += USERID
disable = no # 負負得正,所以 disable= no 表示啟用用這個服務
}
# 開啟xinetd服務
[root@localhost ~]# service xinetd restart
Redirecting to /bin/systemctl restart xinetd.service
# 查看telnet客戶端是否開啟成功
[root@localhost ~]# telnet 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
,,,
- 參考ppt內容,安裝并啟動ftp服務(stand alone模式);
[root@localhost ~]# yum install -y vsftpd # vsftpd是FTP服務器,vsftpd 是"very secure FTP daemon"的縮寫
[root@localhost ~]# vim /etc/xinetd.d/vsftpd # 下方內容復制到 /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
[root@localhost ~]# service xinetd restart
Redirecting to /bin/systemctl restart xinetd.service
[root@localhost ~]# ps -ef | grep vsftp
root 39448 1 0 22:37 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 39945 3609 0 23:03 pts/1 00:00:00 grep --color=auto vsftp
- 創建名為 a+學號 的賬號,并在sudoers檔案中添加該?戶資訊,使得該用戶可以使用sudo命令;
[root@localhost ~]# useradd a+201814090518
useradd:無效的用戶名“a+201814090518”
[root@localhost ~]# useradd a201814090518
[root@localhost ~]# passwq a201814090518
# 添加對/etc/sudoers檔案的寫權限,
[root@localhost ~]# chmod u+w /etc/sudoers
# 找到這一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(這里的xxx是你的用戶名),然后保存退出,
[root@localhost ~]# vim /etc/sudoers #下方兩種格式,建議選第二種寫入
a201814090518 ALL=(ALL) ALL # 這種格式,后面使用sudo命令需要輸入用戶密碼
或者
a201814090518 ALL=(ALL)NOPASSWD:ALL # 這種格式,后面使用sudo命令不用輸入用戶密碼,建議用這個,
Linux給用戶添加sudo權限 - henrylinux - 博客園
- 利用chkconfig命令查看 telnet狀態,并把結果追加到 root主目錄下的 exam3.txt 檔案中;
[root@localhost ~]# chkconfig --list | grep telnet >> /root/exam3.txt
- 把vsftpd的行程資訊追加到 exam3.txt 檔案中(注意去掉grep本身那?條記錄);
[root@localhost ~]# ps -ef | grep vsftpd | grep -v "grep" >> /root/exam3.txt
- 把telnet的配置?件的內容追加到 exam3.txt 中;
[root@localhost ~]# cat /etc/xinetd.d/telnet >> /root/exam3.txt
- 在window命令列下,使用 a+學號 帳號 telnet 登錄linux,把root主目錄下的 exam3.txt檔案復制到當前用戶的主目錄下 tmp.txt ,并把 tmp.txt 的所屬用戶和所屬組改為當前用戶和當前用戶所屬的組;
Windows命令列下:
C:\Users\dell>telnet 192.168.184.128
[a201814090518@localhost ~]$ sudo cp /root/exam3.txt /home/a201814090518/tmp.txt
[a201814090518@localhost ~]$ sudo chown a201814090518 /home/a201814090518/tmp.txt
[a201814090518@localhost ~]$ sudo chgrp a201814090518 /home/a201814090518/tmp.txt
- 在上?步的telnet登錄中,把當前路徑和當前時間追加到 tmp.txt 中;
[a201814090518@localhost ~]$ sudo pwd >> /home/a201814090518/tmp.txt
[a201814090518@localhost ~]$ date '+%Y-%m-%d %H:%M:%S' >> /home/a201814090518/tmp.txt
- 在上?步的telnet登錄中,把/etc/passwd檔案中的第1、3、4欄位內容(用戶名、uid和gid資訊)追加到tmp.txt 中;
[a201814090518@localhost ~]$ sudo cat /etc/passwd | awk -F: '{print $1,$3,$4}' >> /home/a201814090518/tmp.txt
-
保留當前telent視窗,重新打開?個cmd視窗;
-
在新打開的cmd視窗中使用ftp命令進行匿名登錄(用戶名:ftp,密碼為:空);
C:\Users\dell>ftp 192.168.184.128
# (?戶名:ftp,密碼為:空)
- 退出ftp用戶登錄,并登錄 a+學號 用戶;
注意,如果提示425 Failed to establish connection. 請關閉windows防?墻
ftp> close
221 Goodbye.
ftp> quit
C:\Users\dell>ftp 192.168.184.128
#登錄 a+學號 ?戶
- 登錄成功后,切換到/usr目錄,并查看目錄內容,發現用戶可以訪問其他目錄;
ftp> cd /usr
250 Directory successfully changed.
- 修改vsftp的組態檔,禁止匿名用戶登錄,同時鎖定登錄?戶的目錄,不能進行目錄切換;
主要參考這個:手動搭建FTP站點(CentOS 7) - 云服務器 ECS - 阿里云
其他參考:
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()錯誤的解決方法_Laurence的技術博客-CSDN博客
linux下ftp 無法連接目標主機報421 Service not available, remote server has closed connection_qing20130604的博客-CSDN博客
[root@localhost ~]# mkdir /var/ftp/test
[root@localhost ~]# chmod -R 777 /var/ftp/test
[root@localhost ~]# touch /var/ftp/test/testfile.txt
[root@localhost ~]# chown -R a201814090518:a201814090518 /var/ftp/test
[root@localhost ~]# systemctl restart vsftpd.service
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #修改或寫入/etc/vsftpd/vsftpd.conf檔案下方內容,除下面提及的引數,其他引數保持默認值即可,
#修改下列引數的值:
#禁止匿名登錄FTP服務器,
anonymous_enable=NO
#允許本地用戶登錄FTP服務器,
local_enable=YES
#監聽IPv4 sockets,
listen=YES
#在行首添加#注釋掉以下引數:
#關閉監聽IPv6 sockets,
#listen_ipv6=YES
#在組態檔的末尾添加下列引數:
#設定本地用戶登錄后所在目錄,
local_root=/var/ftp/test
#全部用戶被限制在主目錄,
chroot_local_user=YES
#啟用例外用戶名單,
chroot_list_enable=YES
#指定例外用戶串列檔案,串列中用戶不被鎖定在主目錄,
chroot_list_file=/etc/vsftpd/chroot_list
#開啟被動模式,
pasv_enable=YES
# 沒有這個,Windows命令列連接ftp 192.168.184.128時會報下方錯誤,
# 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
# Connection closed by remote host.
allow_writeable_chroot=YES
#本教程中為Linux實體的公網IP,
pasv_address=<FTP服務器公網IP地址>
#設定被動模式下,建立資料傳輸可使用的埠范圍的最小值,
#建議您把埠范圍設定在一段比較高的范圍內,例如50000~50010,有助于提高訪問FTP服務器的安全性,
pasv_min_port=<port number>
#設定被動模式下,建立資料傳輸可使用的埠范圍的最大值,
pasv_max_port=<port number>
# /etc/vsftpd/chroot_list檔案可以沒有內容,但不能沒有,如果沒有,Windows命令列連接ftp 192.168.184.128時會報下方錯誤,所以要用vim創建/etc/vsftpd/chroot_list檔案,
# 500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
# 500 OOPS: priv_sock_get_result
# Connection closed by remote host.
[root@localhost ~]# vim /etc/vsftpd/chroot_list
# 修改組態檔后,需要重啟一下ftp服務
[root@localhost ~]# systemctl restart vsftpd.service
如果第16步運行出問題,再回來看這里,
這里非常容易出錯,我本來能用命令ftp 192.168.184.128連接上,然后,想試試上面第二個鏈接的另一種解決方案,修改了下/etc/vsftpd/vsftpd.conf,修改了下/home/a201814090518的權限,然后連接不上了,我又都改回來了,結果還是連接不上,報如下錯誤:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
可以按以下思路排錯:
1、關閉Windows和Linux的防火墻
2、關閉SELinux
3、百度、stackoverflow都搜索下報的錯誤提示,試試有沒有解決方案,
4、避免是網路問題,用[root@localhost ~]# yum -y install ftp在Linux下安裝下ftp的客戶端,然后用[root@localhost ~]# ftp localhost在Linux上,把ftp客戶端連到ftp服務器上,
5、防止是用戶的問題,新建個用戶,設好密碼,用該用戶來登錄ftp服務器,
我運行了下方命令,然后可以連接上了,也可能問題的解決和下方這些命令無關,是因為一些其他原因,比如網路時好時壞,比如虛擬機出故障了又自動恢復了之類的,下方這些命令只是提供個解決思路,
# 列出所有與ftp相關的selinux bool數值清單串列與內容,
[root@localhost ~]# getsebool -a| grep ftp
# 把他們全部開啟
[root@localhost ~]# setsebool -P ftpd_anon_write=1 ftpd_connect_all_unreserved=1 ftpd_connect_db=1 ftpd_full_access=1 ftpd_use_cifs=1 ftpd_use_fusefs=1 ftpd_use_nfs=1 ftpd_use_passive_mode=1 httpd_can_connect_ftp httpd_enable_ftp_server=1 tftp_anon_write=1 tftp_home_dir=1
[root@localhost ~]# setsebool -P httpd_can_connect_ftp 1
[root@localhost ~]# setsebool -P httpd_enable_ftp_server 1
[root@localhost ~]# chmod 777 /home/a201814090518 # 來自上方第三個鏈接
- 測驗匿名用戶是否可以登錄,測驗普通用戶是否可以進行目錄切換;
# 退出登錄,然后測驗
ftp> close
221 Goodbye.
ftp> quit
# 匿名登錄后會:
ftp> pwd
530 Please login with USER and PASS.
# 測驗目錄切換
C:\Users\dell>ftp 192.168.184.128
Connected to 192.168.184.128.
220 (vsFTPd 3.0.3)
200 Always in UTF8 mode.
User (192.168.184.128:(none)): a201814090518
331 Please specify the password.
Password:
230 Login successful.
ftp> pwd
257 "/" is the current directory
ftp> cd /usr
550 Failed to change directory.
-
把C:\Windows\System32\drivers\etc\hosts檔案copy到桌?;
-
利用lcd 進行window目錄的切換,切換到hosts所在目錄;
ftp> lcd D:\Desktop
Local directory now D:\Desktop.
- 然后把hosts檔案上傳到 a+學號 的用戶主目錄中;
通過圖形用戶界面可以上傳檔案,步驟:
1、Windows中隨便打開一個檔案夾,
2、在地址欄中輸入ftp://<FTP服務器公網IP地址>:FTP埠,本文中為Linux實體的公網IP地址,例如:ftp://192.168.XX.XX:21,
3、在彈出的登錄身份對話框中,輸入已設定的FTP用戶名和密碼,然后單擊登錄,
4、登錄后,您可以查看到FTP服務器指定目錄(/var/ftp/test)下的檔案,例如:測驗檔案testfile.txt,
5、把桌面的hosts檔案夾拖拽到檔案夾下即可上傳,

不過命令列沒能上傳上去:
ftp> put hosts /var/ftp/test/
200 PORT command successful. Consider using PASV.
553 Could not create file.
ftp> put hosts /var/ftp/test/hosts
200 PORT command successful. Consider using PASV.
553 Could not create file.
因為上傳到了/var/ftp/test目錄下,于是要在Linux里轉移檔案位置,
[root@localhost ~]# mv /var/ftp/test/hosts /home/a201814090518/
注意點:
1、/var/ftp/test要允許其他人寫入chmod -R 777 /var/ftp/test
2、/etc/vsftpd/vsftpd.conf要配置允許寫入
- 切換到telnet視窗,把hosts檔案的內容追加到 tmp.txt 中;
[a201814090518@localhost ~]$ cat /home/a201814090518/hosts >>/home/a201814090518/tmp.txt
- 把 tmp.txt 重命名為 exam3.txt;
[a201814090518@localhost ~]$ mv /home/a201814090518/tmp.txt /home/a201814090518/exam3.txt
- 把 exam3.txt 進行 window格式的轉換,同時把 unix2dos 的 輸出內容追加到 exam3.txt中;
# 這樣是可以把 unix2dos 的 輸出內容追加到 1.txt的
[a201814090518@localhost ~]$ unix2dos /home/a201814090518/exam3.txt 2>>/home/a201814090518/1.txt
# 但這個做不到,因為exam3.txt 檔案本來就在轉換中,無法往里加東西
[a201814090518@localhost ~]$ unix2dos /home/a201814090518/exam3.txt 2>>/home/a201814090518/exam3.txt
# 把1.txt的內容手動復制到exam3.txt
-
把 exam3.txt 通過ftp 傳遞到window下;
-
洗掉 a+學號 用戶資訊;
[root@localhost ~]# userdel -r a201814090518
- 把 exam3.txt 重命名為 學號.txt 然后提交
提醒:做完實驗別忘了重新啟動Windows防火墻,

其他
1、
# 可以查看某埠是否打開
[root@localhost ~]# netstat -ntlp | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 48280/vsftpd # 表明21埠已經打開
2、
華農的同學,不點個贊嘛

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280296.html
標籤:其他
