ssh远程连接服务器 脚本文件 【软连接】

ssh远程连接服务器 脚本文件 【软连接】,第1张

一个使用expect免输入密码自动登录ssh的shell脚本,方便好用,适用Mac、Linux

来自卖孝:https://github.com/jiangxianli/SSHAutoLogin

1、ssh_login.sh

2、给ssh_login.sh文件执行的权限

3、配置服务器脚本文件 【软连接】

4、命令使用

服务器登录

选择序列号:1、2、3 .......

5、删除服务器脚本文件 【软连接】

ln参数释义

1.命令格式:

 ln [参数][源文件或目录][目标文件或目录]

2.命令参数:

必要参数:

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是中隐稿否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

选择参数:

-S “-S<字尾备份字符串>”或 “携兄--suffix=<字尾备份字符串>”

-V “-V<备份方式>”或“--version-control=<备份方式>”

--help 显示帮助信息

--version 显示版本信息

SSH连接时有时需要自动设置特定的环境变量,如LANG等。如果您使用专用的图形化SSH终端,如XShell之类的工具,可以直接在相侍运谨应软件的连接配置文件里设置。这里老基记录的是直接在 终端使用SSH命令连接 的情况下,发送环境变量的两种方法(SendEnv和SetEnv)。

SendEnv需要提供一个或多个本地已存在的环境变量名,将本地环境变量发送到远程主机上去;SetEnv可以直接指定一个新的环境变量名和值设置到远程主机上。

1. 如果你在使用ssh config配置文件(~/.ssh/config),格式如下:

2. 如果你想在命令行场景下中使用,格式如下[1]:

3. 也可以通过添加K=V格式的环境变量到~/.ssh/environment文件来设置对悄则所有SSH主机都要应用的环境变量,但是这些环境变量仍然受到服务器sshd设置中AcceptEnv的限制。

1. SetEnv是OpenSSH 7.8新增加的特性,发布于2018年。而SendEnv早就已经普遍支持。

2. 有些极特殊的环境变量如(TERM)暂时还不能通过SetEnv/SendEnv设置,见文章[2]。

3. 你想要设置的变量,必须在服务端/etc/ssh/sshd_config里用AcceptEnv明确允许接收。如果要设置的变量不在其中,需要在sshd配置里加入,或者利用PermitUserEnvironment配置项详细配置,或者看下面一条注意事项中的间接绕过方法。

实测默认允许接收的变量如下:

CentOS 8

Ubuntu 16.04 / MacOS 11.3

4. 另一种发送环境变量的思路是设置连接后自动执行的命令去export变量(类似于文章[1]中提到的workaround)。也可以考虑利用RemoteCommand配置项,但可能有其他问题,如运行ssh hostname command格式的(非交互式shell)命令时可能会报错。见文章[3]提到的问题。

[1]  When ssh'ing, how can I set an environment variable on the server that changes from session to session?

[2]  SSH: Behavior of SetEnv for TERM variable

[3]  Remote command in ssh config file

步骤:

虚拟机的网络就相当于主机一样并行存在,所以当前主机要连接到路由器或交换机等设备,以使两个系统处于同一局域网。

NAT模式即虚拟机的网络是完全依赖于物理主机的网络。此时两个系统并不是处于同一局域网,不能简单的ping通;

但是可以设置Virtualbox在NAT模式(网络地址转换NAT)下的端口转发规则,通过设置规则可使主机连接虚拟机。

设置 -> 网络 -> 网络地址转换(NAT) -> 高级 -> 端口转发 -> 添加规则 :

示例:

测试是否安装ssh:

测试是否可以使用SSH连老亮接 :使用密码登录(设置好端口转发后)

因为端口不是常规默认的,所以需要指定 port

如进行ssh连接则在shell中输入:

进行sftp连接(其端口与ssh是一样的,因为它是ssh的一部分):

ftp连接:

可能并不成功,不知是不是防火墙的问题,使用sftp就好了,更安全。

将上面的 username 改为自己的。

前提是虚戚含者拟机中的Linux安装了ssh服务并开启,且关闭了防火墙(或添加了相应规则)。

安装ssh:

启动服务:

查看是否启动:

配置防火墙

此时在远程客户端进行连接测试,如果可行

Linux 上安装 ssh (Ubuntu &RedHat)

使用了动态防火墙:变更后无需重启系统。它不能与静态防火墙共存。

可以选择开启某个端口,或完全关闭防火墙

查看是否已经开启:

在列出的信息中,查看port开头的行是否包含 22 。

查看防火墙状态:

临时关闭防火墙:

永久关闭防火墙:

打开防火墙:

注意需要root权限。

关闭:

开启:

开机默认关闭防火墙:(即永久)

开机默认开启防火墙:

fedora不可用

参考: http://my.oschina.net/u/217959/blog/38051

SSH原理与运用(一):远程登录

SSH原理与运用(二):远程 *** 作与端口转发

Asrchlinux wiki:

Secure Shell (简体中文)

SSH keys (简体中文)

这部分不大全面。

公钥 是一串很长的字符,为了便于肉眼比对和识别,所以有了指纹这东西,指纹位数更便于识别且与公钥一一对应。

运行命令ssh-keygen采用rsa加密算法生成 密钥对

生成密钥对时,有一个选项要求你设置密码passphrase,该密码是用来保护你的私钥的密码。如果设置了则在使用私钥时会要求你输入这个密码; 一般不设置,记不住 【之后还可更改此密码,使用ssh-keygen -p】。

生成后最好将私钥进行备份。另还有 -C 选项,用于为指定注释 通常使用自己的邮件名作为注释

-b bits选项Specifies the number of bits in the key to create. For RSA keys , the minimum size is 1024 bits and the default is 2048 bits. Generally, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits

示例:为了安全考虑使用RSA加密并设置 -b 4096

实际 *** 作的一次示例:

指纹的用处之一是在使用SSH第一连接到某主机时,会返回该主机使用的公钥的指纹让你识别。示例:

把公钥上传到服务器端有很多方法:

使用sftp的示例:

使用ssh-copy-id的示例:

默认上传到 ~/.ssh/id_ecdsa.pub

上传之后:

导入公高薯钥内容到指定的文件中

保证 authorized_keys 文件的安全

sshd的配置文件位于: /etc/ssh/sshd_config

只需配置:

关闭服务器中的SELinux服务:

其配置文件是: /etc/selinux/config

在文件中添加:

重启系统 或 使用root账户运行: setenforce Permissive

服务器端重启ssh服务:

service sshd restart

连接时出现的提示信息

相关示例:

有一次出现:

这可能是我配置了两台虚拟机,虚拟机配置端口转发时设置的IP地址和端口都是相同的。才导致此提示该主机的指纹(也可能是指公钥)已经改变;更改了端口就没有问题了。(另一种做法是删除.ssh/known_hosts文件,以后连接时再全部重新导入)

后一次出现

这段提示用于提示你是否信任该主机(这里指服务器),如果输入yes则信任该主机并且将该服务器的公钥追加到 .ssh/known_hosts文件中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12279610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存