以root账号登录 执行ssh user@ipaddr 如何实现 无密码登录

问题描述

以root账号登录 执行ssh user@ipaddr 如何实现 无密码登录

有A B两台机器,设A为server(ip:1.1.2.197),B为client(ip:1.1.2.195),现在以root账号登录A机器,想要远程访问B,以cloud账号登录,执行
ssh cloud@1.1.2.195,请问该如何实现?

解决方案

不输入密码自动通过SSH方式登录服务器

冷胜魁(Seaquester)
lengshengkui@gmail.com
2009-7-1

看到ChinaUnix上面有一个网友的帖子,想在linux下使用ssh登录的时候不用每次都输入密码,又不能使用key的方式。
在网上搜索了一下,有网友用expect写了一个自动登录的脚本,但是我试过之后,却发现不能用。
后来看到有人说使用sshpass可以解决问题。所以自己写了一个脚本。脚本写的比较简单,没有考虑安全性的问题。要使用这个脚本必须安装sshpass这个软件。

sshlogin.sh:

#!/bin/bash
#===============================================================================
#

FILENAME:

sshlogin.sh

DESCRIPTION:

Script to use user and password from config file to login remote

ssh server.

This script needs 1 argument to login the remote ssh server:

ipaddr = IP Addreess of remote ssh server.

#

For example:

./sshlogin.sh 192.168.0.1

#

You need to create a config file(pass.dat) with entries like:

server1|user|password

server2|user|password

REVISION(MM/DD/YYYY):

07/01/2009 Shengkui Leng (shengkui.leng@advantech.com.cn)

- Initial version

#
#===============================================================================

#------------------------------------------------------------------------------

NAME:

print_usage

#

DESCRIPTION:

Print usage information

#

PARAMETERS:

$1 - Program name

#

RETURNS:

None

#------------------------------------------------------------------------------
print_usage ()
{
echo "Usage: $1 "
exit 1
}
[ $# -eq 1 ] || print_usage $0

CONFIG_FILE=pass.dat
SERVER=$1
ipaddr=""
username=""
password=""

found=0

while read line ; do
ipaddr=$(echo $line | cut -d'|' -f1)
username=$(echo $line | cut -d'|' -f2)
password=$(echo $line | cut -d'|' -f3)

if [ "$SERVER" == "$ipaddr" ] ; then
    #The server found!
    found=1
    break
fi

done < $CONFIG_FILE

if [ $found -eq 0 ] ; then
echo "The server not found!"
exit 2
fi

if [ -z "$password" ] || [ -z "$ipaddr" ] || [ -z "$username" ] ; then
echo "Invalid config file: $CONFIG_FILE!"
exit 3
fi

#Automatically add new host keys to user known hosts files(known_hosts)
AUTO_ADD_HOST_KEY="-oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no"

echo "Logining(ssh) $username@$ipaddr..."
sshpass -p "$password" ssh $username@$ipaddr $AUTO_ADD_HOST_KEY

exit 0

注1:需要建立一个记录密码、用户名和ssh server IP的文件pass.dat, 格式为:IP|UserName|Password。示例如下:

pass.dat:
192.168.0.1|root|a123B56
192.168.0.2|root|7X890Yz

注2:如果是第一次用ssh登录某一个server时,ssh会提示:

The authenticity of host '192.168.0.1 (192.168.0.11)' can't be established.
RSA key fingerprint is 7b:b9:c3:cd:01:cd:2f:19:4e:96:d3:66:27:55:7f:65.
Are you sure you want to continue connecting (yes/no)?

所以上面的脚本在调用ssh时指定了参数:
-oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no
这样ssh就不会出现上面的提示,详情请参考man ssh_config。

解决方案二:

可参考以下链接

http://blog.chinaunix.net/uid-20644632-id-68037.html

解决方案三:

以A的root账号访问B的cloud账号要这么麻烦吗?

解决方案四:

如果有pem文件
可以用ssh -i xxx.pem ip

时间: 2024-10-15 01:45:07

以root账号登录 执行ssh user@ipaddr 如何实现 无密码登录的相关文章

如何设置 Ubuntu14.04 的 SSH 无密码登录

如何设置 Ubuntu14.04 的 SSH 无密码登录 大家好,今天我来向大家介绍如何在 Ubuntu12.04 上设置 SSH 的无密码登录功能.仅在工作站上有正确的(公私)密钥对以供匹配时SSH服务端才会允许你登录,反之访问将不会被允许. 正常情况下,我们需要连上SSH的控制台输入用户名及其密码才行.如果两者全部正确,我们就可以访问,反之访问被服务端拒绝.不过相比而言还有一种比用密码更安全的登录方式,我们可以在登录SSH时通过加密密钥进行无密码登录. 如果你想启用这个安全的方式,我们只需简

Linux远程登录和无密码登录方法

  一.远程登录方法 SSH 是一种安全通道协议 , 主要用来远程登录.在 RHEL 5 系统中使用的是 OpenSSH 服务器由 openssh , openssh-server 等软件包提供的 ( 默认已经安装 ) ,并以将 sshd 添加为标准的系统服务. 使用方法如下: 代码如下: $ ssh host $ ssh username@host $ ssh -p 222 username@host -p: 指定访问端口 ; 如果省略该参数 , 则默认访问 SSH 服务的默认端口 22; 如

网站的无密码登录

大部分网站,都要求用户登录. 常见的做法,是让用户注册一个账户. 这种做法并不让人满意. 对于用户来说,每个网站必须记住一个密码,非常麻烦:对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击. 所以,很早以前,人们就开始设想"无密码登录"(password-less login).这对用户和网站,都将是极大的减负. 本文先回顾"无密码登录"的几种常见做法,然后探讨一种最简单的实现. 一.OpenID OpenID是最早提出的一种无密

服务器-linux下root用户切换到普通用户执行ssh远程登录失败

问题描述 linux下root用户切换到普通用户执行ssh远程登录失败 这样,我想做一个web一件抓取日志的小程序,后台python调用ssh登录到远程主机执行系统命令抓取符合条件的日志,这个程序集成在一个运行在root下的web站中,然而服务器 设定了root用户不能用ssh远程登录.我想请教是否可能在程序中切换到普通用户登录ssh远程登录其他主机执行ssh命令,然后再切回root...或者是否有其他好的方法来实现这一 功能.(很多台服务器,一次性抓取符合条件的日志) 解决方案 linux下如

服务器-centos ssh root账号不能远程登陆

问题描述 centos ssh root账号不能远程登陆 ssh,sftp忽然之间不能远程登陆了,系统是精简版的centos 服务器返回错误信息大致有一下几个:使用Bitvise ssh客户端1.Server disconnected without sending a disconnect message.2.积极拒绝3.自动断开 去机房捣鼓了一下午还是不行 解决方案 防火墙,或者sshd服务挂了. 解决方案二: 积极拒绝,自动断开 应该是服务器关了把 解决方案三: sshd正常呢,服务器也运

Ubuntu 14.04 为 root 帐号开启 SSH 登录

原文:Ubuntu 14.04 为 root 帐号开启 SSH 登录 1. 修改 root 密码 sudo passwd root 2. 以其他账户登录,通过 sudo nano 修改 /etc/ssh/sshd_config : xxx@ubuntu14:~$ su - root Password: root@ubuntu14:~# vi /etc/ssh/sshd_config 3. 注释掉 #PermitRootLogin without-password,添加 PermitRootLog

CentOS SSH无密码登录的配置_Linux

配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率. 原理简介 为了便于理解,假设需要在hadoop148这台机器上可以通过无密码登录的方式连接到hadoop107上. 首先在 hadoop148上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到hadoop107上. 然后当 hadoop14

linux 让ssh只允许指定的用户登录的权限设置

方法一,只允许ssh指定用户登录权限的设置 SSH远程登录的权限直接影响服务器的安全,为ssh设置合理的用户权限是必须的. 查看ssh版本的命令: ssh -v 设置ssh只允许指定用户登录的方法 在/etc/ssh/sshd_config文件中添加如下语句 允许admin可以在任何地方登录 AllowUsers admin 只允许指定ip地址的用户可以登录 #允许root用户只能在192.168.0.1地方登录 AllowUsers root@192.168.0.1 同时限制用户名和ip登录s

Linux命令之远程登录/无密码登录-ssh,ssh-keygen,ssh-copy-id

SSH是一种安全通道协议,主要用来远程登录.在RHEL 5系统中使用的是OpenSSH服务器由openssh, openssh-server等软件包提供的(默认已经安装),并以将sshd添加为标准的系统服务.使用方法如下: $ ssh host $ ssh username@host $ ssh -p 222 username@host -p:指定访问端口;如果省略该参数,则默认访问SSH服务的默认端口22; 如果是第一次登录对方主机,则系统会出现一下提示: The authenticity o