Ubuntu通过ssh远程登陆主机并复制文件(附The authenticity of host '192.168.XXX.XXX' can't be established. 解决方法)

  在平时跑代码的时候,在自己的电脑上的运行的速度是远远慢于在服务器上运行的速度,所有在服务器上运行是一种很好的选择。但是如果自己的位置距离服务器较远或者服务器并不在自己所在的房间的话,来回跑来跑去运行代码就会变得很麻烦,这个时候如果可以通过ssh进行远程登陆,直接在服务器上进行将是一种很好的选择。

  因此本文所介绍的内容包括这样几个方面:在Ubuntu中安装ssh,通过ssh远程访问服务器,将自己所写的代码通过SCP进行复制。

1. 在服务器上安装并开启ssh

  SH分客户端openssh-client和openssh-server。如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需安装openssh-server。在终端中输入:

sudo apt-get install openssh-server

然后确认sshserver是否启动了:

ps -e |grep ssh

如果看到sshd那说明ssh-server已经启动了。如果没有则可以这样启动

sudo /etc/init.d/ssh start

ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:

sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start

然后使用以下方式登陆SSH:

ssh username@192.168.1.112 

username为192.168.1.112 机器上的用户,需要输入密码。
断开连接:

exit

  如果在发现ssh已经成功启动,但是其电脑依旧无法远程登陆的话,这个时候可以尝试一下关机重启……虽然不知道为什么,虽然不知道原因在于哪?不过亲测好用……

  如果报错“The authenticity of host ‘192.168.XXX.XXX’ can’t be established.”
则可以尝试下面的方法。从字面上理解,这句话的意思是你得权限还不够,所以可以在前面机上 sudo,即

sudo ssh username@192.168.1.112

之后输入自己电脑的密码和服务器的密码即可以登陆。

2. 使用SCP传输文件

  scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

2.1 命令格式:

  scp [参数] [原路径] [目标路径]

2.2 命令功能:

  scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

2.3 命令参数:

  -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)的选项。

2.4 使用实例:

  scp命令的实际应用概述:

2.4.1 从本地服务器复制到远程服务器:

  (1) 复制文件:

  命令格式:

  scp local_file remote_username@remote_ip:remote_folder

或者

  scp local_file remote_username@remote_ip:remote_file

或者

  scp local_file remote_ip:remote_folder

或者

  scp local_file remote_ip:remote_file

  第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名 ;第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名

  (2) 复制目录:

  命令格式:

  scp -r local_folder remote_username@remote_ip:remote_folder

或者

  scp -r local_folder remote_ip:remote_folder

  第1个指定了用户名,命令执行后需要输入用户密码; 第2个没有指定用户名,命令执行后需要输入用户名和密码;

2.4.2 从远程服务器复制到本地服务器:

  从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。

  实例1:从远处复制文件到本地目录

命令:scp [email protected]:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

说明:从192.168.120.204机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中

参考文献
[1]http://www.cnblogs.com/xiazh/archive/2010/08/13/1798844.html
[2]竹子-博客(.NET/Java/Linux/架构/管理/敏捷)

你可能感兴趣的:(ubuntu)