Debianサーバー構築奮闘記

Debianを使って、主にサーバー構築を学んでおり、その備忘録です。基本的に自分用なので、用語とか(特にネットワーク関係)はそのままです。疑問とか、書き殴って放置しておくこともありますが、解決次第追記していきたいと思います。

WindowsでphpとMySQLの連携

○2017/8/15
 
Debianでの設定で困ったので、
いったんWindowsで設定してみることに。
(Apachephpの連携は省略)
 
参考サイト:
 
php.ini の中の"extension=php_mysql.dll"を有効に。
したいんだけど、その項目がない。(php_mysqli.dll ならある。)
ちなみに、バージョンはphp7.0.7 win32bit版用。(参考サイトは7.0.11 win64bit)
 
バージョンの違いか?
じゃない気がする。
そんな急に変わらんだろ。
 
 
なんか、拡張モジュール"mysql"("mysql_connect()"を含むモジュール)は、
「php5.5で非推奨になり、7.0.0で削除された」って書いてある。
"mysqli"、または"pdo-mysql"を使ってくださいと。
 
なので、そうします。
で、PDOはMySQLでもPostgreSQLとかSQLiteってやつでも使えるらしいけど、
とりあえず当面MySQLしか使わないので、"mysqli"を使っていこう。
 
 
phpの設定
php.ini の中の"extension=php_mysqli.dll"のコメントアウトを外す。
・extフォルダに"php_mysqli.dll"ファイルがあることを確認。
php.ini の中の"extension_dir"のパスをextフォルダに設定。
 
MySQLの設定(基本的にDebianでやったのと同じ)
>mysql -u root -p
[パスワード入力]
> create database phptest
→エラー1820 : 「その前にパスワード変えろよ」的な事言われた。
> alter user 'root'@'localhost' identified by '[新しいパスワード]'
 
・データベースとテーブルの作成
> create database phptest
> use phptest;
> create table hanbai(
-> id int not null primary key,
-> shouhin_id int,
-> uriage int);
> create table shouhin(
-> id int not null primary key,
-> name varchar(20));
 
phpテスト用ユーザーの作成
> create user 'phpuser'@'localhost' identified by 'password';
> grant all on phptest.* to 'phpuser'@'localhost';
 
・データの入力
> insert into shouhin values
-> (1, "テレビ"),
-> (2, "DVD"),
-> (3, "パソコン");
> insert into shouhin values
-> (1, 1, 320000),
-> (2, 2, 160000),
-> (3, 3, 180000),
-> (4, 1, 128000),
-> (5, 3, 98000),
-> (6, 2, 140000),
-> (7, 1, 175000);
 
>exit
 
 
●テスト用phpファイルの作成
・ユーザー名、パスワード、データベース名は変更
 
 
●テスト
ブラウザで確認してみる。
→エラー:Class mysqli が見つかりません的な・・・
 
php.ini の編集が反映されてないのかな?
Apache再起動、ブラウザで確認。
("php_mysqli.dll"が、ウイルスソフトに引っかかるので、
ウイルスソフトを一時的に無効にすして再起動。)
→ Success... localhost via TCP/IP
 
OKだな。
 
 
一応、これでphpMySQLの連携についてわかってきたので、
Debianに戻って同じようにやってみる。
 

<Debian>phpとMySQLの連携

○2017/8/13
 
phpMySQL(MariaDB)にアクセスできるようにする
 
phpおよび、MariaDBのインストール・設定の過程はこちら。
 
参考サイト:
とりあえず、php.iniの、"php_mysql.dll"を有効に。
890行目:extension=php_mysql.dll のコメントアウトを外す。
 
で、dllファイルはどこにあるのでしょうか?
いろいろ探したけど、ない。
 
パッケージってインストールされてんのかな?
# aptitude search php
---  いろいろ結果が出てくる  ------ の中に、
p    php7.0_mysql
があった。
 
この最初の"p"って何?
 
調べてみたら、
システムにパッケージが導入されたことがない。らしい。
 
ので、インストールしたらいいのかな?
 
 
よくわからんので、本に従ってやってってみようかな。
(phpインストール→DBの設定→Wordpressのインストール)
 
本でインストールしているphp関係のパッケージのうち、
php (済)
php-mbstring (未)
php-gd (未)
php-mysql (未)
なので、残りの3つをインストール。
 
# aptitude install php7.0-mbstring php7.0-gd php7.0-mysql
意地でもインストールしますw
→完了
 
/etc/php/7.0/mods-available/ 以下に、
mbstring.iniとかが増えてる。
/etc/php/7.0/apache2/conf.d/ 以下にも、
20-mbstring.iniとかが増えてる。
 
phpinfoでも確認してみようか。
apacheを再起動して、
# service apache2 restart
からの、Windowsのブラウザでphpinfoを開く。
→Additional .ini files parsed に反映されてる。
 
多分OKだな。
 
 
 
○2017/8/14
 
では、
 
●データベースの準備
phpのテスト用のデータベース、ユーザーを作成・設定
 
# mysql -u root -p
[rootのパスワードを入力]
[none]> create database phptest; (phpのテスト用のDBを作成)
[none]> grant all privileges on phptest.* to "user"@"localhost" identified by "password";
(localhostの"user"に、データベース"phptest"の全てのテーブルに対する、
全ての権限を持たせる。パスワードは"password"。)
[none]> flush priviledges;
 
セミコロン(;)を忘れないようにしたい。
っていうのと、tabで補完されないからめんどくせ。
 
確認する。
[none]> show grants for "user"@"localhost"\g (なぜに"\g")
 →いろいろ出てくる。
 「GRANT ALL PRIVILEGES ON `phptest`.* TO 'user'@'localhost'」
 もあるので、多分OK
 
試しに、設定してないユーザー名も見てみよう。
[none]> show grants for "test"@"localhost"
→エラー
OKですね。
 
どうでもいいけど、つい成り行きで"user"にしちゃったけど、
ユーザー名を"phpuser"にしときたい。
 
> rename user "user"@"localhost" to "phpuser"@"localhost";
> show grants for "phpuser"@"localhost"\g
→↑と同じ結果:OK
 
一応、ユーザー一覧の確認も。(←SQLいじりたいだけ)
[none]> select user,host from mysql.user;
→phpuser , localhost も出てくる:OK
 
 
 
以下、↓のサイトに従ってやっていく。
 
・テーブルの作成とデータ入力
[none]> use phptest;
[phptest]> create table hanbai(
-> id int not null primary key,
-> shouhin_id int,
-> uriage int);
[phptest]> create table shouhin(
-> id int not null primary key,
-> name varchar(20));
 
テーブル"hanbai":
1列目をint型の項目"id"とし、プライマリキーに設定。
2列目をint型の項目"shouhin_id"とする。
3列目をint型の項目"uriage"とする。
 
テーブル"shouhin"も同様。
 
データの入力
[phptest]> insert into shouhin values
-> (1, "テレビ"),
-> (2, "DVD"),
-> (3, "パソコン");
[phptest]> insert into shouhin values
-> (1, 1, 320000),
-> (2, 2, 160000),
-> (3, 3, 180000),
-> (4, 1, 128000),
-> (5, 3, 98000),
-> (6, 2, 140000),
-> (7, 1, 175000);
 
確認
[phptest]> show tables;
→"shouhin"と"hanbai"が出てくる。:OK
[phptest]> select * from shouhin;
[phptest]> select * from hanbai;
→入力したデータが出てくる。:OK
 
で、MySQL終了
[phptest]> exit
 
 
●テスト用phpファイルの作成
参考サイトの"test1.php"をコピペ(ユーザー名とパスワードは変える)
して、/var/www/html/php/以下に保存。
 
Windowsのブラウザから確認。
→このページは動作していません。
 
apacheを再起動してもう一度。
→このページは動作していません。
 
MySQLを再起動してもう一度。
→このページは動作していません。
 
phpで、データベース使えるようになってないな。
何かが足りない。
 
最初にやった、extension=php_mysql.dll のコメントアウト戻す。
apacheを再起動。MySQLを再起動。
→このページは動作していません。
 
 
○2017/8/15
 
apacheのエラーログを見てみる。
/var/log/apache2/error.log によると、
「定義されていない関数"mysql_connect()"が呼び出されている」
らしい。
 
 
いろいろよくわからんので、
いったんWindows版で試してみよう。
 
 
 
○2017/8/16
 
Windowsでやってみていろいろわかったので、
もう一度設定してみる。
 
まず、phpの拡張モジュールがどこにあるか。
php.ini 内の"extension_dir"を検索。
719行目付近
"; Directory in which the loadable extensions (modules) reside" の下
; exteision_dir = "./"
 
コメントアウトのままだった。
じゃあ、どこかデフォルトで指定されてるはず。
 
phpinfo で確認すると、
exteision_dir : /usr/lib/php/20151012/
って出てきた。
 
なので、↑のディレクトリを確認。
いろいろ、".so"のファイルが入っている。
"mysqli.so"もある。("mysql.so"はない。)
 
そしたら、php.ini のextensionでこのファイルを指定してあげればいいのかな?
(Windowsでは".dll"だけど、Linuxでは".so"らしい。←php.ini 856行目付近より)
 
php.ini の890行目付近に以下を追記
extension=mysqli.so
 
で、Apache再起動。
Windowsで成功したファイルをDebianにコピーして、ブラウザで確認。
→Success... localhost via UNIX socket
 
よし、OK。
 
ところで、phpinfoのページで、
他の拡張モジュールの項目も表示されてたんだけど、
もしかして、この作業要らない?
("exteision_dir"に含まれる".so"ファイルは元々読み込まれる設定?)
 
 
php.ini に、さっき書き足した行をコメントアウト
; extension=mysqli.so
Apache再起動して、ブラウザで確認。
→Success... localhost via UNIX socket
 
やっぱり、必要のない作業をしてたみたいw
なので、php.ini は元に戻しておきます。
 
 
結局、存在しないモジュールの関数を使ってたっていうだけで、
実際はインストールするだけで使えた。
っていう感じだな。
 
というわけで、
ひとまず、phpからMySQLに接続できるようになった。
 

<Debian>phpのインストール

○2017/8/12
 
phpのインストールの前に
 
参考サイト:
 
まず、インストールする前に、phpのパッケージ名の確認。
バージョンがちょっと気になる。
(参考サイトでは、php5になってる。phpって、バージョン7まであるはず。)
← Winowsではこれを参考にインストールした。
 
 
# aptitude search php
---  いろいろ結果が出てくる  ------
 
php5しかないみたいだね。
一応、aptitudeをupdateしてもう一回。
 
aptitude update
# aptitude search php
---  いろいろ結果が出てくる  ------
 
やっぱり、php5しかない。
 
 
どうやら、phpの5系と7系でいろいろ違うみたい。
 
なので、できれば7系でやりたいなぁ・・・
phpbookのサイト(↑↑)を参考にやっていきたいので。
 
Debianでphp7をインストールできないか。
 
 
 
Debianでphp7をインストール
参考サイト:
 
・/etc/apt/sources.list に以下を追記
# PHP7
 
・鍵情報をダウンロードして追加
これ、カレントのディレクトリに保存されんのなw (ちなみに、/root/ 以下)
なんか、鍵の置き場として適切な場所に置きたい。
 
/etc/apt/trusted.gpg.d/ 以下に同じようなgpgファイルがいっぱいあったわ。
ので、そこに置いておくことにする。
# mv dotdeb.gpg /etc/apt/trusted.gpg.d/
 
ところで、gpgって何?
「公開鍵の一種」ってことで。
 
鍵情報の追加
# apt-key add /etc/apt/trusted.gpg.d/dotdeb.gpg
gpg: [don't know]: invalid packet .... →エラーだな
なんででしょうか?
 
mvしたからかなぁ?
試しに、trusted.gpg.dディレクトリに直接ダウンロードしてやってみる。
# cd /etc/apt/trusted.gpg.d/
# apt-key add dotdeb.gpg
OK
 
お、うまくいったねw
で、追加されたことを確認。
 
# apt-key list
(中略)
gpg: [don't know]: invalid packet ....
 
なんか、dotdeb.gpgがなくて、
最初にやった時のエラーメッセージがあるのはなんで?
 
試しに、進んでみよう。
# aptitude update
→やっぱり、http://packages.dotdeb.org には、
「公開鍵を利用できないため検証できませんでした。」だって。
 
# aptitude search php
---  いろいろ結果が出てくる  ------
 
"php7.0"あるね。
なんだかんだ、うまくいってんのかな?
 
インストールしちゃいます。
aptitude install php
→警告出てくる(信頼できないパッケージが~)→yes
意地でもインストールしますw
→完了
 
確認
# php -v
php 7.0.22-1 ......
 
OKだね。
 
ほんで、Apacheでも使えるようにしたい。
 
 
Apacheの設定
参考サイト:(Windows用のApache&php)
 
特に何も必要なさそう。
 
/etc/apache2/apache2.conf にて、
IncludeOptional  mods-enabled/*.load
IncludeOptional  mods-enabled/*.conf
って書いてあるので、(参照:Apacheのインストール)
php7.0.load, php7.0.conf もIncludeされている。はず。
 
php7.0.load 内で、
LoadModule php7_module [パス]
 
php7.0.conf 内で、
<FilesMatch....>
が、書式は違うが書いてある。
 
PHPIniDirがどこで指定されているかがわからないけど、
phpinfo()では、"php.ini"のパスは出てくる。
 
# cd /var/www/html/
# cat >>phpinfo.php
<?php
phpinfo();
?>
[Ctrl+C]
 
で、Windows側のブラウザから、phpinfo.php へアクセス。
→OK
 
とりあえず、phpのインストールは完了。

<Debian>MariaDBのインストール

○2017/6/13
 
MariaDBのインストール
# apt-get -y install mariadb-server
 
「ディスクを入れてください」的なメッセージ出た。
ディスク無いので無理。
 
 
一応、代わりにMySQLサーバー入れようとしてみた。
# apt-get -y install mysql-server
 
同じく、「ディスクを入れてください」。
 
なんかこの、ディスクがないといろいろ入れれないもんがあるみたい。
別のOSに乗り換えた方がいいかな?
→解決済み(「sudoのインストール」参照)
 
 
○2017/7/3
 
MariaDBのインストール
 
# apt-get -y install mariadb-sever (-y オプションで、途中の[yes/no]は全部自動的に"yes"になる)
 
時間かかったけど完了。
 
確認
# mysqld --version
→ 10.0.30-MariaDB-0+deb8u2 (Debian) 的な表示
# mysql -u root -p (-u : ユーザー指定、-p : パスワードを対話的に入力)
[rootのパスワードを入力]
→ ログイン成功
 
 
MariaDBの初期設定
rootパスワードやアクセス制限などを設定する。
# mysql_secure_installation
Enter Current Password for root : [rootのパスワードを入力]
Change root password ? : n
Remove anonimous users ? : y
Disallow root login remotely ? : y
Remove test databases and access to it ? : y
Reload pliviledge tables now ? : y
 
 
・/etc/mysql/my.cnf の編集
[mysqld] の部分の末尾に、
characterset-server=utf8
を追記。
 
 
mysqlの再起動、システム起動時に自動起動する設定
# systemctrl start mysql.service
# systemctrl enable mysql.service
 

<Debian>Apacheのインストール

○2017/06/08
 
本を元に、
 
# apt-get install apache2
CentOS とは違って、"httpd"ではない。
# apt-get install httpd とした時のエラーログ:"apache_install_error.log"
 
インストール先は、 /etc/apache2
 
apache2.conf の編集
 
の前に、試しにそのまま起動してみる。
 
# apache2
→エラーめっちゃ出てきた
(このときのエラーログは、"apache_exec_error.log")
 
 
○2017/06/11
 
起動のときは"start"が必要らしい。
 
# service apache2 start
 or
# apachectrl start
 
参考サイト:
 
じゃあ、出てきたエラーは気にしなくてもいいのかな?
エラー内容が後述の"envvars"で定義されている変数が読み込めないっていう内容だったし。
 
ってか、元々立ちあがってたw
 
 
あらためて、apache2.conf の編集
 
というか、Apache2の場合、apache2.conf 1つのファイルじゃなくて、
いろんなファイルに散らばっているみたい。
ので、設定項目ごとに編集するファイルを探しながらやる。
 
設定する項目:
  1. ServerRoot
  2. Listen
  3. User/Group
  4. ServerAdmin
  5. ServerName
  6. DocumentRoot
  7. DirectoryIndex
 
1.ServerRoot
ファイル:apache2.conf
69行目:
ServerRoot "/etc/apache2" (コメントアウトを削除)
 
 
2.Listen
ファイル:ports.conf
Listen 80 (デフォルトでそのまま)
 
 
3.User/Group
ファイル:apache2.conf
===  108~110行目  =================
# These need to set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
==============================
ってなってるけど、この変数たちは、"envvars"で定義されてるとのこと。
 
ファイル:envvars
16、17行目
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
こいつらを書き変えて好きな名前にすればいい。
 
 
4.ServerAdmin
ファイル:sites-available/000-default.conf
11行目
ServerAdmin  webmaster@localhost
 
5、6のServerName、DocumentRoot と合わせて、<VirtualHost *:80>の中にあるので、
アクセスポートごとに設定ができるのかな?
 
 
5.ServerName
ファイル:sites-available/000-default.conf
9行目
ServerName  www.example.com
 
 
6.DocumentRoot
ファイル:sites-available/000-default.conf
12行目
DocumentRoot  /var/www/html
 
 
7.DirectoryIndex
ファイル:mods-available/dir.conf
2行目
DirectoryIndex  index.html index.cgi index.pl index.php index.xhtml index.htm
 
上のそれぞれのファイルは、apache2.conf 内でincludeされている。
(***-enabled ディレクトリ内は、***-available ディレクトリ内のファイルへのリンクとなっている)
 
===  139~144行目  =====================
# Include module configuration
IncludeOptional  mods-enabled/*.load
IncludeOptional  mods-enabled/*.conf
 
# Include list of ports to listen on
Include ports.conf
==================================
 
===  215~219行目  =====================
# Include  generic snippets of statement
IncludeOptional  conf-enabled/*.conf
 
# Include  the virtual host configurations
IncludeOptional  sites-enabled/*.conf
==================================
 
envvars は、どこで読み込まれてるんだろうね?
起動のプロセスで勝手に読み込まれるんだろうか?
 
それぞれの設定値を変更したときに、何がどう変わるのかを見ておきたい。
特にUser/GroupとServerAdmin
 
 
本ではファイアウォールの設定をしているが、
手元でやる分には必要なさそうなので省略。
Windows側からLinuxのDocumentRootにあるindex.htmlを見られる。
 
一応、後でいじってみることにする。
本より:# firewall-cmd --~~~~~ (インストールが必要? or CentOSのコマンド?)
または、参考サイト:
この辺
 
 
 
○2017/6/12
 
パスワード認証の設定
# mkdir /etc/apache2/conf.d (ディレクトリが無いので作っておく)
# htpasswd -c /etc/apache2/conf.d/htpasswd webuser
パスワードの入力、再入力
 
で、htpasswd ファイル内に"webuser"のパスワードがハッシュで保存される。
 
認証に関するconfファイルを作る
/etc/apache2/conf.d/auth.conf
以下を記述
===============================
<Directory "/var/www/html/secret">
  AuthType  Basic
  AuthName  "Private Area"
  AuthUserFile  /etc/apache2/conf.d/htpasswd
  Require  valid-user
</Directory>
===============================
 
# mkdir /var/www/html/secret
 
secret ディレクトリに、htmltest.html をコピー
# cp /var/www/html/htmltest.html /var/www/html/secret/
 
/var/www/html/secret にアクセスするときに、ユーザー名・パスワードが必要になるはず。
 
 
apache2.conf 内で、auth.conf をインクルード
~~~ 最後の行に追加 ~~~~~
IncludeOptional  /etc/apache2/conf.d/auth.conf
 
※IncludeOptional : リンク先のファイルが存在しなくてもエラーが発生しない。
 
 
で、Apache を再起動して、
# apachectrl restart
 
Window のブラウザから設定したhtmlファイルを開いてみる。
http://[LinuxIPアドレス]/secret/htmltest.html
-> ユーザー名・パスワードを聞かれて、入力すると作ったページが表示された : OK
 
 
auth.conf の内容について
・AuthType:Basic/Digest (認証方式)
・AuthName:認証ウィンドウに表示される文章 <- 表示されないんだけど?
・Require:許可するユーザー(valid-user ならパスワードファイルに書かれた全ユーザー)
 
 
 
○2017/6/22
 
User/Groupのテスト → よくわからん
 
この辺参考に
 

<C841M> Ciscoルーター 基本操作

●コンフィグファイルの保存・バックアップ(TFTP)
 
・PCでTFTPサーバー立ち上げる(TFTPDを使用)
設定:
Current Directory:バックアップファイルを保存するフォルダを選択
Server Interface:ルーターにつなげてるLANポートを選択(IPアドレスもちゃんと設定する)
 
 
・動作中の設定をnvramに保存
#copy running-config startup-config
で、再起動とかしても設定が保存される。
 
 
・バックアップの実行コマンド
#copy startup-config tftp
Address or name of remote host ?(TFTPサーバーのIPアドレス入力)
Source filename ?(バックアップファイル名の入力)
 
または、普通に、
#copy startup-config tftp://[IPアドレス]/[ファイル名]
ってしてもいい。
tftp以外を使うこともできる。
 
また、running-configから直接tftpに送ることも可。
 
 
・バックアップを元に戻すとき(リストア)
#copy tftp startup-config
 
直接running-configにリストアすることも可。
 
 
※工場出荷状態から設定してる場合、VLAN設定を忘れがち。
 VLANのIPアドレスを設定してないと、tftpもtelnetsshも通信できないので注意。
 
 
●再起動(reloadコマンド)
#reload
 
シャットダウンはコマンドではできない。コンセント抜く。
 
 
●初期化
startup-configを削除して再起動する。
#delete nvram:startup-config
#reload
 
※スイッチの場合は、vlan.datも削除する
 
 
●パスワードリカバリの手順
 
1.rommonモードで立ち上げる
起動中、ROMMOM~~~が出てるときにAlt+B
2.レジスタの変更
> confreg 0x2142 (<-もとに戻すときは、0x2102にする)※設定本ではコマンド間違ってる
3.再起動
> reset
 
 
●ショートカットキーとか
 
よく使いそうなのは、
ctrl+a:コマンドの行頭へ移動
ctrl+e:コマンドの行末へ移動
ctrl+u:行の削除
ctrl+z:コンフィグレーションモードから抜ける
 
あとは、| begin とか
 
 
●よく使うグローバルコンフィギュレーション
 
・(config)#no ip domain-lookup
コマンド入力間違いのときとかに、
ドメインとして問い合わせる機能をOFFにする。
 
 
・(config)#enable password [password]
(略記:(config)#en p [password] )
 
これを設定してないと、telnetsshで接続したとき、enableモードに入れない。
 
 
・(config)#username [username] password [password]
(略記:(config)#usern [username] pa [password] )
 
設定してないと、sshで接続できない。
 
 
・(config)#hostname [hostname]
(略記:(config)#ho [hostname])
 
これを設定してないと、認証鍵の生成ができない。
(参照:sshの設定)
 
 
他にもあったら順次更新
 
 

sshの認証方式:パスワード認証と公開鍵認証

○2017/7/29
 
ssh関係の設定をし、いろいろ問題に出くわす中で、
調べていくうちにsshについていろいろわかってきたので、
まとめます。
 
 
まず、sshには「パスワード認証 」と「公開鍵認証」がある。
参考サイト:
 
ざっくり両者の解説
(公開鍵と秘密鍵の話は知ってる呈で)
 
・パスワード認証
クライアントが共通鍵を生成してサーバーと共有(サーバーの公開鍵で暗号化して送信)
→クライアントがパスワード送信(共通鍵で暗号化)
→サーバーが認証
→以降、共通鍵を使った暗号化で通信
 
接続するときのユーザーの操作としては、パスワードを入力するだけ。
 
・公開鍵認証
サーバーが乱数を生成してクライアントに送信(クライアントの公開鍵で暗号化)
→クライアントは乱数のMD5ハッシュしてサーバーに送信
→サーバーが認証
 
接続する前に、クライアント側で鍵を生成して、
公開鍵をサーバーに渡しておく必要がある。
 
 
そういえば、Linuxのsshd設定で、
パスワード認証を無効にするとかやったな。
って思った。
 
 
クライアントソフトごとの接続方法などは、こちらのサイトに。
 
 
 
前回の記事でやった、ciscoルーターでのssh設定は、
パスワード認証だったことが分かった。
 
それじゃあ、ciscoルーターで公開鍵認証の設定もできるのだろうか?
(PCで作成した公開鍵をciscoルーターに保存することってできるの?)
 
調べてみたところ、できるみたい。
 
 
teratermRSA鍵の作成(公開鍵と秘密鍵を保存)
・サーバー側の設定(C841Mルーター)
>en
#conf t
(config)#ip ssh pubkey-chain
(conf-ssh-pubkey)#username admin
(conf-ssh-pubkey-user)#key-string
(conf-ssh-pubkey-data)#(公開鍵のデータを流し込む)
※一行の文字列が長すぎると弾かれてしまうため、数回に分けて流し込む。/div>
 
teratermで、
ユーザー名:admin(多分、pubkey-chainで設定したusername)
パスフレーズrsa鍵を作成した時のパスフレーズ
RSA/DSA/~~~~鍵を使う」にチェック→秘密鍵(K):作成したRSA秘密鍵を選択
で接続
→OK
 
公開鍵方式/パスワード方式を有効/無効する設定もあるみたいだけど、
省略。