ssh命令,主机互联

1.ssh的基本用法

SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

# ssh [email protected]

如果本地用户名与远程用户名一致,登录时可以省略用户名。

# ssh host

SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

# ssh -p 2222 [email protected]

2. ssh密钥认证过程

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个ssh密码登录过程是这样的:

1.用户向远程主机发登录请求:ssh [email protected]远程主机

2.远程主机收到用户的登录请求,把自己的公钥发给用户。

3.用户使用这个公钥,将登录密码加密后,发送回远程主机。

4.远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

5.如果密码正确,就可以登录了。

6.当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

每个SSH用户都有自己的known_hosts文件,分别在自己的$HOME目录下,此外操作系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

说明:

3-4这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?

所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是06:64:d0:2e:31:ad:29:cf:13:a0:e5:47:48:44:2f:4a,再进行比较,就容易多了。

很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。

假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

3.使用公钥登录(免输入密码)

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求输入密码,这和之前的ssh账号密码也没有直接关系。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

# ssh-keygen

运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。

运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

这时再输入下面的命令,将公钥传送到远程主机host上面:

# ssh-copy-id [email protected]

好了,从此你再登录远程主机,就不需要输入密码了。

3.1 免密登录失败解决办法

如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

RSAAuthentication yes  
PubkeyAuthentication yes  
AuthorizedKeysFile .ssh/authorized_keys

然后,重启远程主机的ssh服务。

4.关于authorized_keys文件

远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

如果不使用上面的ssh-copy-id命令,改用下面的命令也可以:

# scp -P 22 id_rsa.pub [email protected]:/root/.ssh/authorized_keys

[email protected]'s password:   <-- 输入机器Server的root用户密码

id_rsa.pub                                                              100%  218     0.2KB/s   00:00

如果远程主机的authorized_keys文件已经存在,也可以往里添加公钥:

先将公钥文件上传到远程主机中,

# scp -P 2007 ~/.ssh/id_rsa.pub [email protected]:/root/

SSH到登陆到远程主机,将公钥追加到 authorized_keys 文件中

cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

或直接运行命令:

cat ~/.ssh/id_dsa.pub|ssh -p 22 [email protected] `cat - >> ~/.ssh/authorized_keys`

写入authorized_keys文件后,公钥登录的设置就完成了。

5.什么是ssh

简单说,SSH是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。

此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

参考来自:http://blog.csdn.net/zyboy2000/article/details/53057330

公钥和私钥的原理:http://blog.csdn.net/abscale/article/details/306675

原文地址:http://blog.51cto.com/11060853/2089881

时间: 2024-11-04 16:28:56

ssh命令,主机互联的相关文章

Java 实现 ssh命令 登录主机执行shell命令

Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台.几乎

ssh 命令

ssh命令是 SSH(全称 Secure Shell)是一种加密的网络协议.使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息.要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的. 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH. 安装 SSH 如果碰巧你的机器没装,我们可以手工来安装一下.最简单的方式就是使用 Linux 包管理器. 基于 Debian / Ubuntu

SSH免密码互联

SSH免密码互联,例如要想实现在192.168.56.100的终端连接192.168.56.101的主机,需要如下配置: (注:192.168.56.100对应的主机名为:huanghe 192.168.56.101对应的主机名为:huanghe1) 将192.168.56.100的公钥复制到192.168.56.101的主机中,然后就可以登陆了,具体步骤如下: 1.在huanghe的终端输入命令:ssh-copy-id  -i  huanghe1     也可执行命名:scp /root/.s

(转) 25个必须记住的SSH命令

转自:http://www.cnblogs.com/weafer/archive/2011/06/10/2077852.html OpenSSH是SSH连接工具的免费版本.telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击.此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本. SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务

25个必须记住的SSH命令

OpenSSH是SSH连接工具的免费版本.telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击.此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本. SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选.下面是通过网络投票选出的25个最佳SSH命令,你必须牢记于心. (注:有些内容较长的命令,在本文中

Crontab执行脚本中的ssh命令访问被拒绝

我们经常会通过crontab来执行定时任务,通常生产环境中在不同主机直接进行登录是通过ssh来连接的.比如我们通过在备份服务器上设定定时任务,定期通过scp(使用SSH的远程拷贝命令)来拷贝远程服务器的数据到备份服务器上,这也是我遇到的一个事情. 环境描述: 脚本与定时任务: 定时任务设置如下: 无论是否执行成功,都把信息输出到2222.txt中 脚本内容如下: 我这里仅用ssh命令来测试,实际上这个命令如果可以正常执行的话,你执行scp命令也一样 #!/bin/bash ssh -v 192.

Linux 下 SSH 命令实例指南

如果你已经在IT圈内混久了, 应该对 SSH 这个了不起的工具及其安全特性有所耳闻吧. 本教程可以让你在短时间内掌握通过 SSH 安全便利地连接到远程计算机的技术. 如果你对 SSH 还没什么概念, 可以先访问 维基百科 进行了解. 基本用法 最简单的 SSH 命令只需要指定用户名和主机名参数即可. 主机名可以是 IP 地址或者域名. 命令格式如下: $ ssh [email protected] 比如要在我的局域网内登录一个树莓派系统, 只需要简单的在命令行输入如下命令: $ ssh [ema

python 通过paramiko模块批量执行ssh命令

多台设备批量执行ssh命令,目前是串行,后期会加入多线程实现并行,直接上源码 # 多台设备批量执行ssh命令     #!/usr/bin/env python     # -*- coding:utf-8 -*-     __author__  = 'babyshen'     __version__ = '1.0.0'     import paramiko     class SSh(object):     def __init__(self,port,username,password

SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方

1.SSH远程管理 SSH(Secure Sheel)是一种安全通道协议,主要用于实现字符界面的远程登录.远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户的口令.与早期的TELNET(远程登录,tcp23端口).RSH(Remote Sheel,远程执行命令).RCP(Remote File Copy,远程文件复制)等应用想必,SSH协议提供了更好的安全性. 配置OpenSSH服务端(由openssh.openssh-server软件包提供.主配置文件/etc/ssh/

SSH命令总结

一.SSH简介 SSH(全称 Secure Shell)是一种加密的网络协议.使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息.要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的. 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH. 二.安装 SSH 基于 Debian / Ubuntu 的系统 : 安装 ssh-client $ sudo apt-get install