首页 > 编程知识 正文

ssh批量远程执行命令,linux ssh远程登录

时间:2023-05-06 17:22:06 阅读:166481 作者:1212

文章目录是终端远程登录SSH命令行并将文件传输到远程服务器(及其加速) mysql导入(sql文件)及其加速)的mysql在Linux上的远程接触

从一无所知到完美布局的血泪之路告诉了我:

一兴奋就不要删除库!

一兴奋就不要删除库!

一兴奋就不要删除库!

30g以上的数据,说要删除就删除,但是转到scp需要半天左右。 需要时间。 去世的是青春啊。 整个过程其实还算顺利,漏洞增加了,但网上资料比较友好,基本上是有解决办法的。 在正文中也添加了很多解决方案的链接~

注意:以下操作假定您已在远程主机上安装了mysql数据库并创建了数据库。 如果您是尚未安装mysql的合作伙伴,建议您首先查找安装教程。 网上有很多,教程很齐全。 这里不是胡说八道。

实现终端远程登录其实,这件事一开始并不打算做那么多,只是想把数据直接用硬盘拷贝到电脑里,直接导入数据库后再建立连接就结束了,谁能想到呢? 也就是说,武断的Linux系统无法识别我手中的MacOS格式和ExFAT格式的硬盘,直接否定了这条简单粗暴的路。 于是合作伙伴告诉我可以尝试ssh远程连接,同时也解决了这个Linux系统不能输入中文字符的问题。

首先,在本地主机上打开终端,然后输入ssh user@host命令。 其中user是远程主机的用户名,host是远程主机的IP地址。 当然,第一次登录一定是失败的。 我什么都没检查,所以如果你登录成功了,可以跳过这一节进行说明。

本节介绍ssh登录失败后的调试经验。

检查远程主机上的ip是否可用(ping )检查远程主机上的端口是否在防火墙上禁用了ssh检查ssh_key是否存在问题存在两个问题。

一个是CentOS7(这是我使用的远程主机系统的版本)的防火墙端口是打开的。 请参阅CentOS7防火墙端口以打开并测试端口

第二个孔,错误如下。

sh _ unabletonegotiatewith 192.168.1.152 port 22: nomatchinghosthostkeytypefound.their offer:sh-DSS

因为根据搜索结果,找不到相关的主机密钥类型。 解决方法很简单。 没有key生成key就可以了。 操作如下。

远程主机中打开终端,输入以下命令以打开ssh _ key ssh-keygen-trsa-f/etc/ssh/生成ssh _ host _ RSA _ key ssh-keygen-tdsa-tdsa -在ssh_host_dsa_key重新启动ssh service ssh restart并重新启动ssh后,远程问题仍然存在

远程主机的~/.ssh目录中添加config vi ~/.ssh/config在config中添加以下code:host * host key algorithms ssh-DSS重新启动SSS 将参数ssh-ohostkeyalgorithms=ssh-DSS user @ host添加到终端输入命令中

参考: Nomatching host host key type found

在SSH命令行中将文件传输到远程服务器(及其加速)之前,windows使用的是可视化的文件传输工具,操作起来很简单,但在mac上用终端登录后,传输文件再使用工具很绕圈还是有命令行工具。 名字叫SCP。

按如下方式使用: 以下操作均位于本地主机上:

服务器scp/path/filename user @ host :/path /其中user是远程主机的用户名,host是远程主机的IP地址。 以下相同。

例如,本地主机是位于主机的scp /root/data.sql root@192.168.225.181:/home/data.sql目录中的test.xml文件,其位于服务器上,名称为192.168.225.181

从服务器下载文件使用scp user @ host :/path/filename/local _ dir/path (本地目录)参考SSH命令行将文件下载到远程服务器

虽然找到了直接的传输方法,但是接下来还存在要上传的. sql文件太大,传输时间太长的问题(大约30G的文件需要几天时间)。 因此,通过各种搜索,找到了提高scp传输速度的方法。

更改ssh加密算法可以使其速度更快。 通常,越弱的加密算法速度越快。 压缩通常会降低scp速度,但这与数据类型有很大关系,启用压缩率极高的数据压缩可以加快具体方法

是在 scp 后面加参数就好啦

scp -r -c arcfour128 ...scp -r -c aes192-cbc ...启用压缩使用参数: -o "Compression yes"

参考 加速scp传输速度

mysql导入sql文件(及其加速)

文件拷入远程服务器后就是数据入库了,以下操作都在远程主机上进行。
.sql文件的导入很简单,常用source 命令:

进入mysql数据库控制台 mysql -u root -p

进入数据库,然后使用source命令,后面参数为要导入的文件路径(如这里用到的.sql)

mysql>use 数据库名称mysql>source /home/data.sql

参考 mysql导入导出sql文件

和传输一样,这里也遇到了导入速度太慢的问题,解决方法为:

在mysql的安装目录下找到my.cnf文件(windows 下为 my.ini,linux 下为 my.cnf)把innodb_flush_log_at_trx_commit这个参数改为0加入以下代码: interactive_timeout = 120wait_timeout = 120max_allowed_packet = 32M

参考 MySQL mysqldump与source导入慢的解决方法

我在修改时没有加最后三行代码,只修改了参数,速度确实快了很多。这里值得注意的是innodb_flush_log_at_trx_commit这个参数的意义,要根据自己数据的重要性进行更改:

如果innodb_flush_log_at_trx_commit设置为 0,log buffer 将每秒一次地写入 log file 中,并且 log file 的 flush (刷到磁盘)操作同时进行。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。如果innodb_flush_log_at_trx_commit设置为 1,每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file,并且 flush 中去.如果innodb_flush_log_at_trx_commit设置为 2,每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file 。但是 flush 操作并不会同时进行。该模式下,MySQL 会每秒执行一次 flush 操作。注意:
由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘) 操作”并不是保证100%的“每秒”。

参考 sync_binlog和innodb_flush_log_at_trx_commit浅析

Linux下mysql的远程连接

远程主机的数据库准备好了以后还没有结束,我们的目的是在其他主机上直接调用远程主机上mysql的数据进行使用。

以下操作可直接在远程主机进行,也可在本地主机通过 ssh 连接上远程主机后操作,都是一样的。

登陆数据库,输入密码 mysql -u root -p 创建用户用来远程连接 mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

(username处填写用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,password处填写密码)

让命令立即生效,查询端口号,然后退出MySQL mysql> flush privileges;mysql> show global variables like 'port'; mysql> exit;

如图,我查到的端口号为3306:

找到 my.cnf 文件,将 bind-address = 127.0.0.1,设置成bind-address = 0.0.0.0(设备地址)

重新启动mysql

/etc/init.d/mysql stop/etc/init.d/mysql start 设置完毕,在其他主机上尝试登录,比如用 windows 上的 navicat 试一试。

参考 Linux下mysql的远程连接

MySQL数据库目录转移问题

其实我在导入数据时还收获了意外的问题,就是在把数据导入 mysql 的过程中,发现 mysql 存储路径下的空间不够用。。。
这个问题让我差点换另一台主机从头再来,也是我删除了 30G 的数据的原因。随后我发现Linux主机目录下还空余着另一个400G盘,那我是不是可以通过修改mysql中数据的存储路径来解决问题呢?事实证明,还真有这种办法(暴风哭泣)。

具体实现我就不做解释了,直接上链接吧!

详见:
Linux下mysql修改数据库存放目录方法和可能遇到的问题
Linux(CentOS)下更改/转移MySQL数据库目录

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。