分类 技术 下的文章

多密钥切换登录ssh

window/linux下, 添加多个密钥到同个用户下, 用户如何切换密钥登录ssh呢?

具体如何创建密钥就不多说了。

多个密钥之间切换关键在于编写 '用户家目录/.ssh/config'文件:

比如, config文件如下:

Host github # 别名
    HostName github.com # 连接对方主机域名或ip地址
    Port 22 # 端口,有时候默认端口不是22的时候指定
    user git # 连接对方主机的用户名
    IdentityFile C:/Users/User/.ssh/github_rsa # 填写你的密钥地址,默认是使用~/.ssh/id_rsa

写入config文件后, 可以使用别名测试ssh链接是否正常 : ssh -T 别名 ( ssh -T github ),

其他情况使用别名, 比如git克隆 : git clone 别名:仓库路径 (相当于 git clone git@github.com:/path/to/repository/xxx.git)

如果依然提示失败, 尝试使用 'ssh-add 密钥地址', 添加密钥到ssh-agent

日期与时间扩展类 - DateTime / DateTimeInterface / DateTimeZone / DateInterval

date_default_timezone_set('PRC');

$dateTime = new DateTime();
p($dateTime->format('Y-m-d H:i:s')); // 当前时间

// DateTime::add
$dateInterval = new DateInterval('P1YT3H'); // 给时间对象增加1年3小时
$dateTime->add($dateInterval);
p($dateTime->format('Y-m-d H:i:s')); // 格式化时间,参数与 date() 接受的参数一致

// DateTime::sub
$dateTime->sub($dateInterval); // 给时间对象减少1年3小时
p($dateTime->format('Y-m-d H:i:s'));

// DateTime::modify
$dateTime->modify('+1 day'); // 修改时间对象,参数与 strtotime() 接受的参数一致
p($dateTime->format('Y-m-d H:i:s'));

// DateTime::setDate
$dateTime->setDate('2016','9','16'); // 三个参数分别表示 "年" "月" "日"

// DateTime::setTime
$dateTime->setDate('0','0','0'); // 三个参数分别表示 "时" "分" "秒"

// DateTime::setTimeStamp
$dateTime->setTimeStamp(time()); 

// DateTime::setTimeZone
$dateTime->setTimeZone(new DateTimeZone('PRC')); // 设置时区

// DateTimeInterface::diff
$dateTime2 = new DateTime();
$dateInterval = $dateTime->diff($dateTime2); // 求两个时间对象之差,返回DateInterval对象
echo $dateInterval->format('相差 %Y 年 %M 月 %D 天, %H 小时 %I 分钟 %S 秒 ');

// DateTimeInterface::getOffect
echo $dateTime->getOffset(); // 获取当前时间对象对UTC时间的偏移 , 参考date('Z');

// DateTimeInterface::getTimeStamp
echo $DateTime::getTimeStamp();

// DateTImeInterface::getTimeZone
echo $dateTime->getTimeZone();

// DateInterval::__construct
$dateInterval = new DateInterval('P1Y');
/*
参数是一个特殊格式的字符串 : P开头,表示'period'
Y表示年;M表示月;D表示天;W表示星期;H表示小时;M表示分;S表示秒, 在字母前面加上数字即可 , 注意顺序不能调换
比如 'P1Y2M3D' 表示1年2个月3天, 'P3D1Y2M' 则错误

如果要表示时间,要加上"T"
比如 'P1Y2M3DT1H1M1S', 当有H,M,S要表示时, 要在Y,M,D后面,H,M,S前面加上T
*/

// DateInterval::format
$dateInterval->format('%y %m %d $h %i $s'); // 大写表示结果补零,比如 01