Overview
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
本文将主要介绍Ubuntu下通过SSH远程登录服务器的相关指令和文件传输方法:
Instruction
Installation
可以通过apt-get安装SSH相关服务:
sudo apt-get install openssh-client # install ssh-client
sudo apt-get install openssh-server # install ssh-server
Setup Service
启动/重启/停止ssh-server:
# Setup
sudo service ssh start
sudo /etc/init.d/ssh restart
sudo /etc/init.d/ssh start # optional
sudo /etc/init.d/ssh stop # optional
Modify Port
ssh-server默认的端口号是22,可以使用如下命令打开ssh配置文件,如果远程服务器防火墙有为scp命令设置指定的端口,则根据需要更改端口号:
# modify {Port}(default: 22), then RESTART
sudo gedit /etc/ssh/sshd_config
sudo /etc/init.d/ssh restart
配置文件内容大致如下,更改“Port 22”一行即可
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Check
判断ssh服务是否已经启动,可以通过如下命令执行:
# Check
sudo ps -e | grep ssh
示例输出如下所示:
2151 ? 00:00:00 ssh-agent
5313 ? 00:00:00 sshd
ssh-agent表示ssh-client已启动
sshd表示ssh-server已启动
Login
ssh服务启动后,即可使用用户名密码登陆,命令格式如下:
其中两种方式等价,{ServerIp}表示你要连接的服务器IP,{UserName}表示你的用户名
回车后再输入你的密码{PassWord},即可远程登录
# Login
ssh {UserName}@{ServerIp} # then input {PassWord}
ssh -l {UserName} {ServerIp} # then input {PassWord}
File Transfer
在Linux系统之间传输文件/文件夹的命令格式如下:
其中{LocalFile}表示本机的文件/文件夹/位置,{RemoteFile}表示服务器上的文件/文件夹/位置
无论是从本机复制文件到远程,或从远程复制文件到本机,所用指令相同,仅参数位置不同
# File/Folder Transfer
scp -r {LocalFile} {UserName}@{ServerIp}:{RemoteFile} # from local to remote
scp -r {UserName}@{ServerIp}:{RemoteFile} {LocalFile} # from remote to local
例如:
# 复制本机当前目录下的localfile.txt到远程主机指定目录
scp -r localfile.txt username@192.168.0.1:/home/username/
# 复制远程主机上的remotefile.txt到本机当前所在目录
scp -r username@192.168.0.1:/home/username/remotefile.txt .
scp是secure copy的缩写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,可用于Linux之间文件或目录的复制
完整语法:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
简易写法:
scp [可选参数] file_source file_target
参数说明:
-1:强制scp命令使用协议ssh1
-2:强制scp命令使用协议ssh2
-4:强制scp命令只使用IPv4寻址
-6:强制scp命令只使用IPv6寻址
-B:使用批处理模式(传输过程中不询问传输口令或短语)
-C:允许压缩(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限
-q:不显示传输进度条
-r:递归复制整个目录
-v:详细方式显示输出(scp和ssh(1)会显示出整个过程的调试信息,这些信息用于调试连接,验证和配置问题)
-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh
-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh
-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh
-l limit:限定用户所能使用的带宽,以Kbit/s为单位
-o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program:指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项
p.s. 使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的
Exit
退出远程登录的命令也很简单:
# Exit
exit
Reference
[1] Ubuntu下ssh服务的安装与登陆(ssh远程登陆)
[2] Linux scp命令
[3] Ubuntu下ssh服务器文件操作命令
希望能够对大家有所帮助