ubuntu下进行ssh

ubuntu下进行ssh

一, 介绍

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital
UNIX、Irix,以及其他平台,都可运行SSH。

SSH分为客户端和服务端。

服务端是一个守护进程,一般是sshd进程,在后台运行并响应来自客户端的请求。提供了对远程请求的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。

客户端一般是ssh进程,另外还包含scp、slogin、sftp等其他进程。

工作机制:

1. 客户端发送一个连接请求到远程服务端

2. 服务端检查申请的包和IP地址,再发生密钥给SSH客户端;

3. 客户端再将密钥发回服务端,自此建立连接。

从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

-----------------------------------------------------------------------------------------------------

二,  ubuntu开启SSH服务

1 安装

SSH分客户端openssh-client和openssh-server

如果只是想登陆别的机器,SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server

sudo apt-get install openssh-server

(查看返回的结果,如果没有出错,则用putty、SecureCRT、SSH Secure Shell Client等SSH 客户端软件,输入您服务器的 IP 地址。如果一切正常的话,等一会儿就可以连接上了。并且使用现有的用户名和密码应该就可以登录了

2  查看SSH客户端版本

有的时候需要确认一下SSH客户端及其相应的版本号。使用ssh -V命令可以得到版本号。需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH:

 $ ssh -V
 OpenSSH_6.6.1p1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f 6 Jan 2014

3 确认sshserver是否启动:

ps -e |grep ssh

 netstat -tlp

如果看到sshd那说明ssh-server已经启动了。

如果只有ssh-agent那ssh-server还没有启动.

3 启动SSH

若没有启动则启动:sudo /etc/init.d/ssh start

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

Port 222

然后重启SSH服务.

OpenSSH Server 已安装完毕.可以通过 /etc/ssh/sshd_config文件使登陆时间更短.

由于 sshd 需要反查客户端的 dns 信息导致登陆时间变慢。 可以禁用这个特性来提高登录的速度。首先,打开 sshd_config 文件:

  sudo gedit /etc/ssh/sshd_config

  找到 GSSAPI options 这一节,将下面两行注释掉:

  #GSSAPIAuthentication yes #GSSAPIDelegateCredentials no

然后重新启动 ssh 服务即可.

4  重启SSH服务

sudo /etc/init.d/ssh stop   #停止

sudo /etc/init.d/ssh start  #启动

或 sudo /etc/init.d/ssh resart  #重启

5 客户端登陆SSH:

1)  ssh remote_ip

2)  ssh -l username remote_ip

3)  ssh [email protected]_ip         #将username换成自己的用户名,将remote_ip换成远程服务器的ip地址

     ssh [email protected]

wsh为192.168.3.102 机器上的用户,需要输入密码。

4)  利用 PuTTy 通过证书认证登录服务器

 SSH 服务中,所有的内容都是加密传输的,安全性基本有保证。 使用证书认证的话,安全性更高,还可以实现证书认证自动登录。

      首先, 修改 sshd_config 文件,开启证书认证选项:

   RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile %h/.ssh/authorized_keys

修改完成后重新启动 ssh 服务。

      其次,为SSH用户建立私钥和公钥。

登录到需要建立密钥的账户下(注意需退出 root 用户),可用 su 命令---->运行:ssh-keygen---->将生成的 key 存放在默认目录下。

(建立的过程中会提示输入 passphrase,这相当于给证书加个密码,这样即使证书不小心被人拷走也不怕了。如果这个留空的话,后面即可实现 PuTTy 通过证书认证的自动登录)

       ssh-keygen 命令会生成两个密钥, 我们需要将公钥改名留在服务器上:

          cd ~/.ssh mv id_rsa.pub authorized_keys

然后将私钥 id_rsa 从服务器上复制出来,并删除掉服务器上的 id_rsa 文件。服务器上的设置就做完了.

下面的步骤需要在客户端电脑上来做。

首先,我们需要将 id_rsa 文件转化为 PuTTy 支持的格式。这里我们需要利用 PuTTyGEN 这个工具:

  点击 PuTTyGen 界面中的 Load 按钮,选择 id_rsa 文件,输入 passphrase(如果有的话),然后再点击 Save PrivateKey 按钮,这样 PuTTy 接受的私钥就做好了。

  打开 PuTTy,在 Session 中输入服务器的 IP 地址,在 Connection->SSH->Auth 下点击 Browse 按钮,选择刚才生成好的私钥。然后回到 Connection 选项,在 Auto-login username 中输入证书所属的用户名。回到 Session 选项卡,输入个名字点 Save 保存下这个 Session。点击底部的 Open 应该就可以通过证书认证登录到服务器了。如果有 passphrase 的话,登录过程中会要求输入 passphrase,否则将会直接登录到服务器上,非常的方便。

6 断开连接:exit

7 一些操作:

1) 将文件/文件夹从远程服务器拷至本地(scp)

  scp -r [email protected]_ip:/home/username/remotefile.txt ./

2) 将文件/文件夹从本地拷至远程服务器(scp)

 scp -r localfile.txt [email protected]_ip:/home/username/

3) 将文件/文件夹从远程服务器拷至本地(rsync)

 rsync -v -u -a --delete --rsh=ssh –stats [email protected]_ip:/home/username/remotefile.txt

4) 将文件/文件夹从本地拷至远程服务器(rsync)

 rsync -v -u -a --delete --rsh=ssh --stats localfile.txt [email protected]_ip:/home/username/

5) 连接远程ssh非22端口的服务器(ssh端口为12345)

 ssh -p 12345 [email protected]_ip

6) 远程拷贝ssh非22端口的服务器文件(ssh端口为12345)

     scp -P 12345 local_file [email protected]_ip:remote_dir

    scp -P 12345 [email protected]_ip:remote_file local_dir

    scp -o port=12345 [email protected]_ip:remote_file local_dir

    scp -P 12345 -r local_dir/.* [email protected]_ip:remote_dir

拷贝目录,-r是将目录下的目录递归拷贝。".*"是将隐藏文件也拷贝过去。需要先在远端创建好相应的目录。

7) sftp(Secure File Transfer Protocol)用法

  sftp -o port=12345 [email protected]_ip:remote_dir

8) ssh默认配置是允许root登录的,可以修改配置表禁止其登录

PermitRootLogin no   #禁止

PermitRootLogin without-password #不需要密码登陆

-------------------------------------------------------------------------------------

参考资料:

[1] 百度百科

[2] http://www.cnblogs.com/xiazh/archive/2010/08/13/1798844.html

[3] http://www.cnblogs.com/chen1987lei/archive/2010/12/02/1894768.html

[4] http://blog.sina.com.cn/s/blog_6cb543ef0100upx9.html

[5]http://www.cnblogs.com/rond/p/3688529.html

---------------------------------------------------------------------------------

author: wsh

email: [email protected]

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 02:44:40

ubuntu下进行ssh的相关文章

Ubuntu下开启SSH服务

来源:http://blog.sina.com.cn/s/blog_7c2374190100tyc9.html 在Ubuntu下开启SSH首先要确认你是否配置了IP,如果没有用以下命令进行配置: 1.sudo ifconfig eth0 192.168.0.3 netmask 255.255.255.0  //配置你的eth0网卡的ip地址和子网掩码  2. duso route default gw 192.168.0.1 //配置你的默认路由 开启ssh服务1.查看是否有sshd_confi

烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢

本文首发于烂泥行天下. 这几天在Ubuntu下使用SSH连接centos系统,发现连接很慢.建议一个连接大约需要30s.很是坑爹,如下: 后来查询相关资料,发现这个是Ubuntu的一个Bug.解决此Bug很简单,只需要修改/etc/ssh/ssh_config即可.如下: sudo vi /etc/ssh/ssh_config 把ssh_config配置文件中GSSAPIAuthentication由原来的yes修改为no即可. 然后再次使用ssh连接centos就很快了.

Ubuntu下安装SSH

最近重新在虚拟机下安装了Ubuntu 14.04,可能是因为在安装过程中有的步骤skip了,所以之前有的一开始就安装好的软件这次并没有默认安装好.刚才想在windows下用SecureCRT来远程登录,发现登录不上.怀疑是Ubuntu没有开启ssh,于是 [email protected]:~$ ps -e |grep ssh 输出只有一行 2156 ?        00:00:00 ssh-agent 证明ssh-server没有启动,试着使用/etc/init.d/ssh start来启动

ubuntu下开放ssh连接服务的方法

在ubuntu系统下安装ssh服务的方法,ssh分客户端openssh-client和openssh-server,若要在本机开放ssh服务,则要安装openssh-server. 说明:1.客户端ssh只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client) 2.若要在本机开放ssh服务,则要安装openssh-server sudo apt-get install openssh-server 然后,确

Ubuntu下通过SSH远程登录服务器的方法

1. 首先在服务器上安装ssh的服务器端.$ sudo aptitude install openssh-server 2. 启动ssh-server.$ /etc/init.d/ssh restart 3. 确认ssh-server已经正常工作.$ netstat -tlptcp6 0 0 *:ssh *:* LISTEN -看到上面这一行输出说明ssh-server已经在运行了. 4. 在Ubuntu客户端通过ssh登录服务器.假设服务器的IP地址是192.168.0.103,登录的用户名是

ubuntu下安装ssh服务器方法

由于xshell远程连接ubuntu是通过ssh协议的,所以,需要给ubuntu安装ssh服务器. 1)ubuntu安装ssh服务器 sudo apt-get install openssh-server 2)出现问题时,重启ssh服务即可 sudo service ssh restart 3)ssh协议科普 Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定:SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的She

ubuntu 下安装ssh服务

sudo aptitude install ssh ssh localhost 测试无问题之后 往下看 开启root支持 首先给ubuntu root添加密码 sudo passwd root 小插曲 配置系统允许root登录 sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 加入 greeter-show-manual-login=true 保存!! 编辑ssh配置文件 sudo vi /etc/ssh/sshd_config 找

ubuntu下的ssh工具gstm

(转自:http://www.nenew.net/ubuntu-ssh-gstm.html) 首先安装: sudo apt-get install gstm 就可以安装,当然你也可以到http://sourceforge.net/projects/gstm/files/gSTM/gSTM-1.2/gstm_1.2_i386.deb/download 来下载 安装完成后我们可以在应用程序的互联网中找到这款工具.点击运行之- gSTM的界面灰常简洁,奶牛就截图说明下咯- gstm ubuntu ss

Ubuntu 下配置 SSH服务全过程及问题解决

Windows下做Linux开发,装虚拟机里,怎么可以不用SSH呢.有人说,“做Linux开发,还不直接装机器上跑起来了,还挂虚拟机,开SSH……闲的蛋疼了吧”,不管怎样,我接触Linux算是3年了,用了3年的Ubuntu了 吧,对Ubuntu算是了解,Ubuntu在Linux众多发行版里做的算是可圈可点的了,但是Linux在PC系统中的很多方面并不是非常到位,用户体 验也好,性能也罢.我也热爱Linux,不过不能否认它在这方面的一些略势,当然他强大的命令行.网络服务,以及那华丽的界面也是win