linux改密码会影响自动登录吗,你能在.ssh/config中设置密码以允许自动登录吗?...

问题描述

我正在使用ubuntu 11.10。我每天都使用ssh连接到很多服务器,所以我把它们的参数放在.ssh/config文件中;喜欢这个 :

Host Home

User netmoon

Port 22

HostName test.com

对于每个连接,有没有办法将密码放在此文件中?因此,当服务器请求密码时,终端将其传递并发送到服务器。

这是因为有时候我会离开电脑,当我回去输入密码,然后按回车键,终端说CONNECTION CLOSED。

我不想使用公钥/私钥对。

最佳解决思路

为方便起见,安全交易永远不会结束……

你能用openssh-client包中的ssh-copy-id吗?

来自man ssh-copy-id:

ssh-copy-id is a script that uses ssh to log into a remote

machine and append the indicated identity file to that

machine's ~/.ssh/authorized_keys file.

次佳解决思路

如果您不想使用公钥/私钥对,可以编写expect脚本,根据目标地址自动输入密码。

编辑:我的意思是你可以有一个脚本,一方面使用expect为你输入密码,另一方面,从配置文件中读取给定用户和主机的密码。例如,以下python脚本将适用于晴天场景:

#!/usr/bin/python

import argparse

from ConfigParser import ConfigParser

import pexpect

def main(args):

url = args.url

user, host = url.split('@', 1)

cfg_file = 'ssh.cfg'

cfg = ConfigParser()

cfg.read(cfg_file)

passwd = cfg.get(user, host)

child = pexpect.spawn('ssh {0}'.format(url))

child.expect('password:')

child.sendline(passwd)

child.interact()

if __name__ == '__main__':

parser = argparse.ArgumentParser(description='Run ssh through pexpect')

parser.add_argument('url')

args = parser.parse_args()

main(args)

配置文件格式如下:

[user_1]

host1 = passwd_1

host2 = passwd_2

[user_2]

host1 = passwd_1

host2 = passwd_2

注意:如上所述,python脚本需要更加复杂,以处理来自ssh和所有可能URL的所有可能错误和问题消息(在示例中,假设它将类似于user@host,但用户部分不是大多数时候都没用过,但基本的想法仍然是一样的。注册配置文件,您可以使用不同的配置文件或使用.ssh/config并编写自己的代码来解析该文件并获取给定用户和主机的密码。

第三种解决思路

还有sshpass程序。使用方法:sshpass -p MyPa55word ssh me@myservor.com

第四种思路

不,我害怕这是不可能的。

唯一真正的选择是使用私钥,但你说你不想(为什么不呢?)。

第五种思路

ProxyCommand怎么样:

Host Home-raw

HostName test.com

Host Home

User netmoon

Port 22

ProxyCommand sshpass -pmypass ssh netmoon@%h-raw nc localhost %p

您也可以使用ssh -W代替nc:

ProxyCommand sshpass -pmypass ssh netmoon@%h-raw -W localhost:%p

第六种思路

您可以在/usr /local /bin中创建一个简单的ssh脚本替换:

#!/bin/bash

host=$1

password=`awk "/#Password/ && inhost { print \\\$2 } /Host/ { inhost=0 } /Host $host/ { inhost=1 }" ~/.ssh/config`

if [[ -z "$password" ]]; then

/usr/bin/ssh $*

else

sshpass -p $password /usr/bin/ssh $*

fi

然后在你的〜/.ssh /config文件中你可以使用

Host foohost

User baruser

#Password foobarpassword

第七种思路

我使用VanDyke Software的一个名为SecureCRT的应用程序。

它不是免费的,但价格非常合理。我已经使用它多年(在Windows上运行,或使用Wine)进行远程访问,终端仿真和(分散的)网络管理。他们最终在2011年初发布了本机Linux版本。

它支持复杂的登录设置(或脚本),存储的密码(或证书),标签式多个会话等。

在启动时,您可以从存储的远程(或本地)计算机的结构化列表(树视图)中选择哪个远程目标(和协议),或者只创建一个连接(然后存储)。

我发现它对具有高级身份验证,non-standard端口或firewall-access协商的远程站点特别有用。

如果您正在进行大量远程访问(主要角色的一部分),那么此应用程序将在使用的第一个月内证明其费用。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值