ssh:安全登录远程主机或运行远程命令(ssh:Secure Shell)
telnet:登录远程主机(不安全)
scp:在远程主机和本地间安全传输文件(scp:Secure Copy)
sftp:在远程主机和本地间安全传输文件(交互式)(sftp:Secure File Transfer Protocol)
ftp:在远程主机和本地间传输文件(交互式,不安全)(ftp:File Transfer Protocol)
在linux系统中,很容易在机器之间建立网络连接,进行远程登录及文件传输。不过需要你确认这样做的安全性。
ssh命令
ssh [options] host [command]
如果你有远程主机的账号,ssh(Secure Shell)程序就可以让你安全登录它。ssh将所有通过它进行网络传输的数据进行加密,包括用户名及密码(你访问远程主机需要密码)。ssh协议也支持其他认证方式,例如公钥与主机IDs。
ssh命令的常用选项:
-l user | 指定远程登录用户名;否则,ssh将使用你当前的本地账号登录。也可以使用语法 username@host; |
-p port | 指定port端口号,而不是使用默认的22端口 |
-t | 在远程主机上分配tty;在远程主机上运行交互式程序(如运行文本编辑器)时特别有用。 |
-v | 输出详细的交互信息。对调试很有用。 |
telnet命令
telnet [options] host [port]
telnet让你能够登录远程主机(如果你有远程主机的账号):
$ telnet remote.example.com
应该避免使用telnet进行远程登录:许多操作都是不安全的,而且它在网络中以明文方式传输登录密码,容易被盗取。请使用ssh代替telnet,它通过加密保护密码和数据,比较安全。以下是两种例外情况:
Kerberos环境下,在客户端及服务器端均使用增强的(“kerberized”)telnet软件。
连接到远程端口后,没有传输任何秘密的信息。例如,检查远程主机上的web服务器(80端口)是否存在:
$ telnet remote.example.com 80
Trying 192.168.55.21...
Connected to remote.example.com (192.168.55.21).
Escape character is '^]'.
xxx //随意输入并按回车键
<HTML><HEAD> //是的,它是web服务器
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
Your browser sent arequest that
this server could not understand.<P>
</BODY></HTML>
Connection closed by foreign host.
由于不鼓励继续使用telnet,所以本书就不解释它的选项了。
scp命令
scp local_spec remote_spec
scp(secure copy)命令用于在计算机间批量复制文件和目录。(如果需要交互,可改用sftp)。两端之间的所有通信数据都被加密。以下是一个简单的例子,scp可将文件从一个机器复制到另一个机器中:
$ scp myfile remote.example.com:newfile
将目录递归复制至远程主机:
$ scp -r myfile remote.example.com:
将远程文件复制至本地主机:
$ scp remote.example.com:myfile .
将远程目录递归复制至本地主机:
$ scp -r remote.example.com:mydir .
如果在远程主机上有不同的用户名,使用username@host语法指定远程用户名(注:冒号之后不用新文件名,就是用原文件名??):
$ scp myfile smith@remote.example.com:
scp命令的常用选项:
-p | 复制所有文件属性(权限,时间戳) |
-r | 递归复制整个目录及其内容 |
-v | 产生详细的输出信息,对调试很有用 |
sftp命令
sftp (host username@host)
sftp程序交互式地在两台机器间安全传输文件。(和scp相反,它是批量复制)。它的用户界面和ftp非常相像,但是ftp不安全。
$ sftp remote.example.com
Password: ********
sftp> cd MyFiles
sftp> ls
README
file1
file2
file3
sftp> get file2
Fetching /home/smith/MyFiles/file2 to file2
sftp> quit
如果你在远程主机上的用户名不同于本地的,请使用username@host参数:
$ sftp smith@remote.example.com
sftp中的命令有:
命令 | 意义 |
help | 查看可用的命令列表 |
ls | 列出当前远程目录下的所有文件 |
lls | 列出当前本地目录下的所有文件 |
pwd | 打印当前的远程工作目录 |
lpwd | 打印当前的本地工作目录 |
cd dir | 切换远程工作目录 |
lcd dir | 切换本地工作目录 |
get file1 [file2] | 将远程文件file1复制到本地(可更名为file2) |
put file1 [file2] | 将本地文件file1复制到远程主机(可更名为file2) |
mget file* | 使用通配符*和?将多个远程文件复制到本地 |
mput file* | 使用通配符*和?将多个本地文件复制到远程主机 |
quit | 退出sftp |
ftp命令
ftp [options] host
ftp(File Transfer Protocol)程序用于在计算机间传输文件,但是因为你的用户名和密码都是以明文方式在网络中传输,所以不那么安全。如果远程服务器支持的话,建议使用sftp替代ftp。
在sftp中列出的命令在ftp中一样使用(但是,两个程序也支持其他不同的命令)。