Linux root不能 ssh 登陆的问题
2017-07-07 tech linux 1 mins 178 字
有的发行版的 ssh 配置限制了,需要修改以下几个地方。
vim /etc/ssh/sshd_config
#PermitRootLogin without-password #注释这句话
PermitRootLogin yes #改为yes 然后重启ssh
service ssh restart
有的发行版的 ssh 配置限制了,需要修改以下几个地方。
vim /etc/ssh/sshd_config
#PermitRootLogin without-password #注释这句话
PermitRootLogin yes #改为yes 然后重启ssh
service ssh restart
环境:
宿主:Mac
VM: Debian (linux系统都可以吧
步骤
使用桥接方式运行虚拟机(使得虚拟机与宿主处于同一个局域网)
进入linux系统,在 ~/.bashrc
或者 ~/.zshrc
设置代理:
export ALL_PROXY=socks5://172.20.10.5:1086 # IP设置是你 Mac 的内网 IP 地址
alias checkip="curl -i http://ip.cn" # 查看本机外网 IP 归属地。
测试是否成功。在命令行里运行下面的命令查看是否设置成功。
checkip
最近刚切换回 Mac 下进行开发,所以写了比较多的 Mac 环境部署之类的文章。今天需要重新切换一下本地的开发环境。原本想直接在当前环境下开发, 毕竟 Mac 自带了 PHP 环境,今天需要新添一个扩展 freetype ,需要重新编译一遍 PHP。 由于这个扩展是核心内置扩展,没法通过phpize来编译安装。 解决办法只有一个,就是找到PHP的安装源码重新编译一下,在编译的时候,加上–with-freetype-dir。
但是要知道的一个事 —— Mac上PHP是内置的,根本就找不到它的安装源码在哪!
所以需要重新编译一遍 PHP,并且不影响 Mac 当前的 PHP 环境。
Mac 下软件的安装和管理,当然离不开 homebrew 了。
brew install php54
brew install php55
brew install php56
brew install php70
安装新版本时,你很大几率上会被提醒,php 已经安装了 xxx 版本了,你需要先 unlink 原先的版本。于是就是下面的这个命令了。先 unlink 再安装。 安装后自然就 link 好了。
通过 brew 安装的 php 可以通过brew link和brew unlink来切换不同版本。
brew list
brew unlink php56
brew link php55
大版本可以用brew list来查,如果是小版本的话只能去/usr/local/Cellar/php55看了。这个时候使用php-version可以更方便一点。
homebrew 中有一个非常便于管理和切换 PHP 版本的工具 —— php-version.
安装php-version
brew install php-version
然后执行下面的命令。也可以讲下面这个命令放到 ~/.bashrc 或 ~/.zshrc 里去
source $(brew --prefix php-version)/php-version.sh && php-version xxx # xxx 是版本号
直接执行
php-version
就可以看到现有的版本,比如我自己的
➜ ~ php-version
5.4.45
5.5.38
5.6.30
* 7.0.20
然后使用以下命令切换即可
php-version 7.0.20
再看php的版本,已经切换好了。
php -v
注:我在早期时已经装好了 php7,今天切换版本的时候
php -v
一直没什么变化,误导了我。最后我先将这个 php70 版本 remove 后再 install, 就没问题了。
虽然在终端里,php -v 已经是最新的7了。我原先 IDEA 里的 php 版本还是 5.6.30 的。这个改起来就很简单了。
在 Preference 里找到 php 的设置,讲原先的 /usr/bin/php
改为 /usr/local/bin/php
即可。
各版本的配置在目录
/usr/local/etc/php/xxx
里,根据需要设置即可。
假设我们要装5.6版本的 mcrypt 插件
brew search php56-mcrypt
brew install php56-mcrypt #默认安装在`/usr/local/Cellar/`下
然后找到mcrypt.so 文件,通过pwd查看路径,接着编辑PHP配置文件(php.ini):
vi /usr/local/etc/php/xxx/php.ini #通过brew默认配置文件路径
在php配文件增加代码:
extension=/usr/local/Cellar/php56-mcrypt/5.6/mcrypt.so
先前有写过这样一篇文章《Fiddler 让 Win10 自带日历客户端连接谷歌账户》
然而 Fiddler 毕竟是跟踪流量用的,本业并不是代理,所以在代理设置上还是捉襟见肘的。 今天找到了 Proxifier 这个软件,就是为了代理而生的,非常好用。
先说一下使用场景,我目前的需求是在 Mac 下同步 Google Drive,虽然登录是没问题,然而连接就是失败,官方客户端也没有提供 http/socks 代理设置之类的,也是无语。于是就找到了这个东西。
Proxifier allows network applications that do not support working through proxy servers to operate through a SOCKS or HTTPS proxy and chains. The most advanced proxy client 。https://www.proxifier.com/index.htm
Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持 64位系统,支持Xp,Vista,Win7,MAC OS ,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定域名,指定程序等运行模式,兼容性非常好,和SOCKSCAP属于同类软件,不过SOCKSCAP已经很久没更新了,不支持64位系统。 有许多网络应用程序不支持通过代理服务器工作,Proxifier 解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。此外,它让你获得了额外的网络安全控制,创建代理隧道,并添加使用更多网络功能的权力。
特性如下:
先看我在推特上的这条吐槽:
https://twitter.com/kelvinbloodzz/status/881719864989065217
嘛,事情是这样的。 我在阿里云的机器上编译 PHP,编译到中途就报了错误——内存不足。于是就纳闷了,这问题咋解决啊,难道要我换台机器?虚拟内存在哪呢?然后就是这样了:
才知道原来阿里云没有为我们默认创建交换分区。这个,算是个坑吧。
所以下面来看怎么添加交换分区。
给linux增加swap主要有两种方法,1是增加swap文件,2是增加swap分区。
在你有单独硬盘可以挂载的时候,才可以用第二种方式。具体根据你的环境操作来选吧。
free查看系统内存及交换分区的使用率
用法:free -m #以兆为单位查看
free –m
使用虚拟设备生成空文件
dd if=/dev/zero of=目录/文件名 bs=容量 count=次数
dd if=/dev/zero of=/swapfile bs=100M count=10 #表示增加1G虚拟内存
生成交换分区文件
mkswap /swapfile
激活交换分区
swapon /swapfile
swapon -s //检查是否生效
交换分区永久生效
在文件/etc/rc.local中添加一行
swapon /swapfile #重启系统生效
如果要去掉这个新的交换分区,用如下命令:
/sbin/swapoff /swapfile
设置分区
mkswap /dev/sdc
激活分区
swapon /dev/sdc
swapon -s //检查是否生效
交换分区永久生效
echo /dev/sdc swap swap defaults 0 0 >> /etc/fstab //将/dev/sdc自动挂载成Swap写入fstab文件里
在 openvz 的机器中,你可能会遇到这样一个错误:
swapon: /swapfile: swapon failed: Operation not permitted
对于这个问题我还没有好的解决办法,如果你有解决办法的话欢迎和我联系。
当我们编译好 php 后,启动 php-fpm 时会出现这样一系列的模块加载失败的错误:
NOTICE: PHP message: PHP Warning: Module 'bcmath' already loaded in Unknown on line 0
NOTICE: PHP message: PHP Warning: Module 'curl' already loaded in Unknown on line 0
...
如图:
或者是查看 php 版本时,php -v
也会出现这样的错误。
PHP有两种方式添加扩展模块, 一种是直接编译进了PHP,另外一种是通过共享模式添加模块,并在php.ini配置文件中配置相应的模块。 在编译时的区别如下:
以下是直接编进内核的示例:
./configure --prefix /usr/share/php7 \
--enable-mbstring \
--with-bz2 \
--with-curl \
--with-xsl
以下是共享模式添加的示例:
./configure --prefix /usr/share/php7 \
--enable-mbstring \
--with-bz2=share \
--with-curl=share \
--with-xsl
以上问题出现的原因是我们需要的模块已经编译进PHP了,但是我们通过共享模块再次加载了这些模块,这样就导致重复加载。
解决方案:修改php.ini配置文件,注释掉相应的模块配置
;extension=pcre.so
;extension=spl.so
;extension=simplexml.so
;extension=session.so
;extension=exif.so